[英]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
我正在重載超時參數,因為看來名稱更改即將到來 ,我只想確保至少擊中一個超時。
但是,當我在調試器中運行測試時,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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.