django - 在没有 worker 的情况下运行 celery 任务

标签 django asynchronous celery django-celery

如何在没有 worker 的情况下运行所有​​ celery 任务,我的意思是直接调用?
我可以用TaskName.run()调用任务,但是我想在配置中写这个,那么如何制作呢?

最佳答案

只需设置 CELERY_ALWAYS_EAGER 设置为 true,这将强制 celery 不将任务排队并在当前进程中同步运行它们。

如果您希望能够按特定任务执行此操作,可以使用 运行它们。申请()运行()正如你提到的,而不是用 运行它们apply_async() 延迟() .

所以tl;博士:

CELERY_ALWAYS_EAGER = True
# The following two would do and act the same, processing synchronously
my_task.run() 
my_task.delay()


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

关于django - 在没有 worker 的情况下运行 celery 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39523522/

相关文章:

python - Django Haystack Elasticsearch返回开发服务器上的所有内容,但可在Shell中运行

c# - 如何对列表中的所有元素运行方法 c# 以缩短加载时间

javascript - 您可以直接使用 .then 调用异步函数/方法吗?

python - 如何创建一个永远在其上运行滚动协程的事件循环?

rabbitmq - Celery 在重试任务时抛出 IOError

python - Airflow 随机向任务发送sigterms

python - 如何解决为用户指定未知字段(Id_card_number)的问题?

javascript - 试图在 django admin 中显示/隐藏 change_list 过滤器

python - 如何从ManyToOne表中只获取一个对象,而不是查询集?

django - Celery 存储不可恢复的任务失败以供以后重新提交