Django在芹菜中的信号

pri*_*stc 10 django django-signals celery

我有一个在Celerybeat实例中运行的任务.当执行该任务时,它有时会修改一个模型对象,该对象应触发post/pre_save信号,但事实并非如此.信号没有发生.我想这是因为Django的信号是同步的,而芹菜在不同的宇宙中的不同线程中的不同服务器上做这件事.是否有一种简单的方法可以让这些信号在芹菜中运行时被点燃?

ask*_*sol 18

Django信号是本地的,这意味着信号处理程序也必须在worker中注册.

如果您的信号处理程序已连接到例如models.py,那么您需要将其导入tasks.py以确保它也在工作程序中连接.

或者,您可以使用以下CELERY_IMPORTS设置指定worker应导入的其他模块:

CELERY_IMPORTS = ("myapp.handlers", )
Run Code Online (Sandbox Code Playgroud)

-I芹菜的论点.

$ python manage.py celeryd -I myapp.handlers
Run Code Online (Sandbox Code Playgroud)