在app init之后,有没有办法以编程方式更改Celery配置?

2024-10-06 13:53:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经建立了一个测试环境,让Celery工人实际运行在其他进程中,这样就可以测试我的Celery系统的全部功能。这样,任务实际上在工作进程中运行,并与测试运行程序通信,因此我不需要CELERY_ALWAYS_EAGER来测试此功能。在

也就是说,在某些情况下,我的任务会触发其他任务,而不关心它们何时完成,我想创建这样的测试,也就是说,等待这些子任务完成。在这些情况下,最简单的方法似乎是急切地运行这些测试(即,CELERY_ALWAYS_EAGER设置为true)。在

但是,我看不到在Celery初始化后更改配置的简单方法。。。实际上,从源代码来看,它似乎认为一旦应用程序启动,配置就不会改变。在

这对于很多选项都是有意义的,因为工作人员必须实际看到更改,而从主程序更改它不会起任何作用。但是在CELERY_ALWAYS_EAGER的情况下,这对于主程序能够更改它是有意义的。在

有没有任何直接/受支持的方法来做到这一点?如果没有,最好不要太老套的方法是什么?在

另一个选择是让有问题的任务返回它启动的任务ID,这样测试就可以等待它们。。。但是我不喜欢仅仅为了让API在单元测试中运行而改变API的想法。在


Tags: 方法程序功能api测试环境进程系统情况
1条回答
网友
1楼 · 发布于 2024-10-06 13:53:51

只需更改Celery的.conf对象(一个Settings的实例)上的变量即可工作:

app.conf.CELERY_ALWAYS_EAGER = True

尽管^{} is indeed a ^{} of ^{}(无论如何在3.1.22版本中),它缓存返回的实例,而不是所有值-因此配置确实是可动态更新的。在

相关问题 更多 >