我已经建立了一个测试环境,让Celery工人实际运行在其他进程中,这样就可以测试我的Celery系统的全部功能。这样,任务实际上在工作进程中运行,并与测试运行程序通信,因此我不需要CELERY_ALWAYS_EAGER
来测试此功能。在
也就是说,在某些情况下,我的任务会触发其他任务,而不关心它们何时完成,我想创建这样的测试,也就是说,等待这些子任务完成。在这些情况下,最简单的方法似乎是急切地运行这些测试(即,CELERY_ALWAYS_EAGER
设置为true)。在
但是,我看不到在Celery初始化后更改配置的简单方法。。。实际上,从源代码来看,它似乎认为一旦应用程序启动,配置就不会改变。在
这对于很多选项都是有意义的,因为工作人员必须实际看到更改,而从主程序更改它不会起任何作用。但是在CELERY_ALWAYS_EAGER
的情况下,这对于主程序能够更改它是有意义的。在
有没有任何直接/受支持的方法来做到这一点?如果没有,最好不要太老套的方法是什么?在
另一个选择是让有问题的任务返回它启动的任务ID,这样测试就可以等待它们。。。但是我不喜欢仅仅为了让API在单元测试中运行而改变API的想法。在
只需更改Celery的
.conf
对象(一个Settings
的实例)上的变量即可工作:尽管^{} is indeed a ^{} of ^{} (无论如何在3.1.22版本中),它缓存返回的实例,而不是所有值-因此配置确实是可动态更新的。在
相关问题 更多 >
编程相关推荐