我正在使用celery来处理django项目。
在celery任务文件中,我需要导入我的模型,以便触发模型方法。 然而,我也希望我的模型能够触发特定的celery任务。
现在,我正在将我的模型导入到celery中,但是尝试将celery任务导入到我的模型文件中会导致循环导入和导入错误。
正确的做法是什么?
我正在使用celery来处理django项目。
在celery任务文件中,我需要导入我的模型,以便触发模型方法。 然而,我也希望我的模型能够触发特定的celery任务。
现在,我正在将我的模型导入到celery中,但是尝试将celery任务导入到我的模型文件中会导致循环导入和导入错误。
正确的做法是什么?
Celery提供了send_task()
方法,可以通过名称发送任务,从而无需导入它 - 例如:
# models.py
from celery import current_app
# no need to import do_stuff from tasks because it will be sent by name
current_app.send_task('myapp.tasks.do_stuff', args=(1, 'two'), kwargs={'foo': 'bar'})
更多详情请查看文档.