【发布时间】:2016-07-21 19:05:27
【问题描述】:
我已经建立了一个测试环境,让 Celery 工作人员在其他进程中实际运行,以便可以测试我的 Celery 系统的全部功能。这样,任务实际上在工作进程中运行并与测试运行程序进行通信,因此我不需要CELERY_ALWAYS_EAGER 来测试此功能。
话虽如此,在某些情况下,我有一些任务会触发其他任务而不关心它们何时完成,我想创建一个测试——也就是说,等待这些子任务完成。 在这些情况下,最简单的方法似乎是只运行这些测试急切(即CELERY_ALWAYS_EAGER设置为true)。
但是,我看不到在 Celery 初始化后更改配置的简单方法......事实上,从源代码一目了然,它似乎假设配置 不会改变 应用启动后。
这对很多选项都很有意义,因为工作人员必须实际看到更改,并且从主程序更改它不会做任何事情。但在CELERY_ALWAYS_EAGER 的情况下,主程序能够更改它是有意义的。
是否有任何直接/得到良好支持的方法来做到这一点?如果不是,那么最好不要太笨拙的方法是什么?
另一种选择是让有问题的任务返回它开始的任务 ID,以便测试可以等待它们......但我不喜欢仅仅为了制作而更改我的 API 的想法它可以在单元测试中运行。
【问题讨论】:
标签: python unit-testing testing configuration celery