Mam zadanie uruchamiane w instancji Celerybeat. Kiedy wykonywane jest to zadanie, czasami modyfikuje obiekt modelu, który powinien wystrzelić sygnał post/pre_save, ale tak się nie dzieje. Sygnał się nie dzieje. Wyobrażam sobie, że jest to spowodowane tym, że sygnały Django są synchroniczne, podczas gdy seler robi to na innym serwerze w innym wątku w innym wszechświecie. Czy istnieje prosty sposób, aby nadal uruchamiać te sygnały podczas prowadzenia selera?Sygnały Django w selerze
8
A
Odpowiedz
16
Sygnały Django są lokalne, co oznacza, że program obsługi sygnału musi być również zarejestrowany w module roboczym.
Jeśli twój program obsługi sygnału jest podłączony w models.py
, następnie należy zaimportować tę w tasks.py
, aby upewnić się, że jest również połączona z robotnikiem.
Alternatywnie można określić dodatkowe moduły pracownik powinien importować za pomocą ustawienie CELERY_IMPORTS
:
CELERY_IMPORTS = ("myapp.handlers",)
lub -I
argument celeryd.
$ python manage.py celeryd -I myapp.handlers