Django Signale in Sellerie

8

Ich habe eine Aufgabe, die in einer Celerybeat-Instanz ausgeführt wird. Wenn diese Task ausgeführt wird, ändert sie manchmal ein Modellobjekt, das ein post / pre_save-Signal auslösen sollte, tut dies jedoch nicht. Das Signal passiert nicht. Ich kann mir vorstellen, dass dies daran liegt, dass Djangos Signale synchron sind, während Sellerie es auf einem anderen Server in einem anderen Thread in einem anderen Universum macht. Gibt es eine einfache Möglichkeit, diese Signale noch zu entzünden, während sie in Sellerie laufen?

    
priestc 13.10.2010, 01:14
quelle

1 Antwort

16

Django-Signale sind lokal, was bedeutet, dass der Signal-Handler ebenfalls im Worker registriert sein muss.

Wenn Ihr Signal-Handler z. models.py , dann musst du das importieren in tasks.py , um sicherzustellen, dass es auch im Worker verbunden ist.

Alternativ können Sie zusätzliche Module angeben, die der Worker importieren soll Die Einstellung CELERY_IMPORTS :

%Vor%

oder das Argument -I für selleryd.

%Vor%     
asksol 14.10.2010 08:00
quelle

Tags und Links