芹菜任务不会超时



我想验证芹菜任务的设置时间限制。

我目前的配置看起来像这样:

CELERYD_TASK_SOFT_TIME_LIMIT = 30
CELERYD_TASK_TIME_LIMIT = 120
task_soft_time_limit = 29
task_time_limit = 44_LIMIT = 120

我在超时参数过载,因为看来名称更改了,我只想确定我至少打了一个超时。

但是,当我在调试器中进行测试时,CLERY app.conf字典看起来像这样:

(Pdb) app.conf['task_time_limit'] == None
True
(Pdb) app.conf['task_soft_time_limit'] == None
True
(Pdb) app.conf['CELERYD_TASK_SOFT_TIME_LIMIT']
30
(Pdb) app.conf['CELERYD_TASK_TIME_LIMIT']
120

我已经写了一个测试,我相信它会触发超时,但从未提出过错误:

@app.task(soft_time_limit=15)
def time_out_task():
    import time
    count = 0
    #import pdb; pdb.set_trace()
    while count < 1000:
        time.sleep(1)
        count += 1
        print(count)

我的问题如下:

  1. 我应该设置的圆锥形设置是什么?
  2. 我如何在测试中执行任务,这向我证明了时间限制已到位。

谢谢

我通过更改测试方式以及更改导入芹菜配置的方式来解决问题。

最初,我通过导入DJANGO设置对象来设置配置:

app = Celery('groot')
app.config_from_object('django.conf:settings', namespace='CELERY')  

,但这是忽略CELERYD_...前缀的设置。因此,我使用了新的符号并称为以下方法:

app.conf.update(
    task_soft_time_limit=30,
    task_time_limit=120,
)

我还从在Django测试环境中对此进行了更改,转换为旋转一个实际的芹菜工人并将任务发送给工人。如果有人为如何在单元测试中测试超时设置提供解决方案,将不胜感激。

在django设置中

CELERY_TASK_TIME_LIMIT = 60 

相关内容

  • 没有找到相关文章

最新更新