Celery 任务不会超时
Celery task does not timeout
我想验证设置芹菜任务的时间限制是否有效。
我目前的配置如下所示:
CELERYD_TASK_SOFT_TIME_LIMIT = 30
CELERYD_TASK_TIME_LIMIT = 120
task_soft_time_limit = 29
task_time_limit = 44_LIMIT = 120
我正在重载超时参数,因为看起来 name change coming 我只是想确保我至少达到了一次超时。
但是当我 运行 在调试器中进行测试时,cellery 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)
我的问题如下:
- 我应该为软时间限制和硬时间限制设置哪些锥形设置?
- 如何在向我证明时间限制已到位的测试中执行任务。
谢谢
我通过更改测试方式和导入 Celery 配置的方式解决了这个问题。
最初,我通过导入 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 测试环境中对此进行测试更改为启动一个实际的 Celery worker 并将任务发送给该 worker。
如果有人能提供如何在单元测试中测试超时设置的解决方案,我们将不胜感激。
在 django 设置中 CELERY_TASK_TIME_LIMIT 对我有效
CELERY_TASK_TIME_LIMIT = 60
我想验证设置芹菜任务的时间限制是否有效。
我目前的配置如下所示:
CELERYD_TASK_SOFT_TIME_LIMIT = 30
CELERYD_TASK_TIME_LIMIT = 120
task_soft_time_limit = 29
task_time_limit = 44_LIMIT = 120
我正在重载超时参数,因为看起来 name change coming 我只是想确保我至少达到了一次超时。
但是当我 运行 在调试器中进行测试时,cellery 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)
我的问题如下:
- 我应该为软时间限制和硬时间限制设置哪些锥形设置?
- 如何在向我证明时间限制已到位的测试中执行任务。
谢谢
我通过更改测试方式和导入 Celery 配置的方式解决了这个问题。
最初,我通过导入 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 测试环境中对此进行测试更改为启动一个实际的 Celery worker 并将任务发送给该 worker。 如果有人能提供如何在单元测试中测试超时设置的解决方案,我们将不胜感激。
在 django 设置中 CELERY_TASK_TIME_LIMIT 对我有效
CELERY_TASK_TIME_LIMIT = 60