Dau*_*aev 5 django asynchronous celery django-celery
如何在没有工人的情况下运行所有 celery 任务,我的意思是直接调用?我可以用TaskName.run()调用任务,但是我想在配置中写这个,那么如何制作呢?
如果我理解正确的话,你想同步调用任务。
只需像平常一样调用该方法即可:
TaskName()
Run Code Online (Sandbox Code Playgroud)
delay只有当你想发送给worker时才需要使用。
只需将CELERY_ALWAYS_EAGER设置设置为 true,这将强制 celery 不将任务排队并在当前进程中同步运行它们。
如果您希望能够按特定任务执行此操作,您可以使用apply()或run()运行它们,而不是使用apply_async()或delay()运行它们。
所以tl;博士:
CELERY_ALWAYS_EAGER = True
# The following two would do and act the same, processing synchronously
my_task.run()
my_task.delay()
Run Code Online (Sandbox Code Playgroud)
但
CELERY_ALWAYS_EAGER = False
# These two won't be the same anymore.
my_task.run() # Runs synchronously
my_task.delay() # Passed to the queue and runs Asynchronously, in another process
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5719 次 |
| 最近记录: |