簡體   English   中英

如何在某些時間之前重試芹菜任務?

[英]How do I retry Celery task until certain time?

我閱讀了有關Celery任務文檔 ,但無法理解我該怎么做。

我想啟動一個任務,運行並每1秒重試一次。 3秒鍾后,它應停止重試並返回默認值。

這是一個POC代碼,無法正常運行:

@task(expires=3, default_retry_delay=1, max_retries=10)
def ttt(args):
    try:
        return slow_work_result(args)
    except SlowWorkFailed:
        pass

    try:
        return ttt.retry(countdown=1)
    except MaxRetriesExceededError:
        return False


ttt.apply_async(args=(1,)).get()

任務應該在3秒后過期,但是MaxRetriesExceededError應該在10秒后引發。 但是當我運行它時,它由於MaxRetriesExceededError而停止。

我究竟做錯了什么?

這個try-except構造可以更優雅嗎?

我寫了一個任務裝飾來重試任務,也許可以解決您的問題。

https://gist.github.com/3958777

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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