2010-10-13 12 views
8

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

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