Cla*_*diu 2 python testing configuration unit-testing celery
我已经建立了一个测试环境,让Celery工人实际在其他进程中运行,以便可以测试我使用Celery的系统的全部功能。这样,任务实际上在工作进程中运行,并与测试运行器进行通信,因此我不需要CELERY_ALWAYS_EAGER
测试此功能。
话虽这么说,在某些情况下,我有一些任务会触发其他任务,而无需关心它们的完成时间,并且我想创建测试来执行-即等待这些子任务完成。在这些情况下,最简单的方法似乎是急切地运行这些测试(即CELERY_ALWAYS_EAGER
设置为true)。
但是,在Celery初始化之后,我看不到更改配置的直接方法...实际上,从源代码一瞥,似乎它假设一旦应用启动,配置就不会更改。
这对于很多选项来说都是有意义的,因为工作人员将必须实际看到更改,而从主程序进行更改将无济于事。但是,对于CELERY_ALWAYS_EAGER
,这对于主程序能够进行更改是有意义的。
是否有任何直接/得到充分支持的方式来做到这一点?如果不是,那么最好的方法不是太hacky?
另一个选择是使有问题的任务返回它开始时的任务ID,以便测试可以随后等待它们……但是我不赞成更改API以使其可运行的唯一目的。单元测试。
只需更改Celery .conf
对象(的一个实例Settings
)上的变量即可:
app.conf.CELERY_ALWAYS_EAGER = True
Run Code Online (Sandbox Code Playgroud)
尽管conf
确实是@cached_property
of的Celery
(无论如何在3.1.22版中),但是它缓存了返回的实例,而不是所有的值-因此该配置确实可以动态更新。
归档时间: |
|
查看次数: |
1282 次 |
最近记录: |