簡體   English   中英

芹菜任務不超時

[英]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)

我的問題如下:

  1. 我應該為軟性和硬性時間限制設置哪些圓錐形設置?
  2. 我如何在測試中執行任務,這向我證明了時間限制。

謝謝

我通過更改測試方式和導入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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM