Mam aplikację zbudowaną przy użyciu selera, a ostatnio dostaliśmy wymaganie, aby wykonywać określone zadania zgodnie z harmonogramem.Celerybeat - wiele instancji i monitorowanie
myślę celerybeat jest idealny do tego, ale mam kilka pytań:
- to możliwe, aby uruchomić wiele instancji celerybeat tak, że zadania nie są duplikowane?
- Jak upewnić się, że celerybeat jest zawsze ustawiony na & działa?
tej pory czytałem to: https://github.com/celery/celery/issues/251 i https://github.com/ybrs/single-beat
Wygląda jednej instancji celerybeat powinien być uruchomiony.
Używam aplikacji w kontenerach dokerów AWS elasticbeanstalk i pracownikach selerów (również w razie potrzeby można je szybko skalować).
Najlepiej byłoby, gdyby selekcja przebiega przez supervisord razem z selerami, ale wydaje się, że nie jest to właściwy sposób.
Jednoczesne posiadanie tego pojedynczego wystąpienia celerybeat wymagałoby ręcznego zapewniania/uruchamiania i monitorowania.
Nie mogę odtworzyć tego zachowania z "DatabaseScheduler" _djcelery_.Używam harmonogramu interwałowego 'timedelta (sekundy = 5)' i bazy danych _SQLite_ do testowania. Zadania są wstawiane do kolejki i przetwarzane dwukrotnie, jeśli są uruchomione dwa procesy "bitowe". – Feuermurmel
Mogę się mylić, ale czy ten proces "rezerwacji" nie jest właśnie użyty, aby wielu pracowników nie wykonywało * tej samej * pracy? Nie ma to nic wspólnego z synchronizowaniem wielu programów planujących, aby nie uruchamiały duplikatów zadań. – Ian
@Feuermurmel Potwierdzam to. Celerybeat musi być uruchamiany tylko raz. –