我的 Django 测试中包含几个 celery 任务。不幸的是,通过 .delay() 调用任务时不会抛出异常。我正在设置 CELERY_ALWAYS_EAGER为真。
tasks.py
import celeryapp as app
@app.task()
def exception_task():
print 'CELERY_ALWAYS_EAGER:', app.conf['CELERY_ALWAYS_EAGER']
raise Exception('foo')
测试.py
def test_exception_in_task(self):
from tasks import exception_task
exception_task.delay()
输出
CELERY_ALWAYS_EAGER: True
.
----------------------------------------------------------------------
Ran 1 test in 0.686s
当删除 .delay 时,测试退出并出现错误:
ERROR: test_exception_in_task
Exception: foo
版本
celery==3.1.4
Django==1.6.4
最佳答案
似乎我还必须设置 CELERY_EAGER_PROPAGATES_EXCEPTIONS为真。
关于python - celery 任务不会在 Django 测试中抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27029745/