芹菜任务未按预期重试

时间:2017-12-21 20:44:19

标签: python celery

我正在从事芹菜项目。我有一些旧代码,我试图在新环境中重用。这很简单。 我的失败条件是另一个任务返回空字符串。这两项任务如下。

@app.task(track_started=True, bind=True)
def get_latakoo_transcript(self, latakoo_object_id):
    return my_client.get_transcript(latakoo_object_id).json()['result']['transcription']



@app.task(track_started=True, bind=True)
def add_latakoo_transcript(self, latakoo_document):
    latakoo_object_id = latakoo_document.get_document()['headers']['id']
    transcript = get_latakoo_transcript(latakoo_object_id)

    if transcript == '':
        print('-----------------------')
        print(latakoo_object_id)
        self.retry(countdown=1,  max_retries=100)
    else:
        success = latakoo_document.add_transcript(transcript)
        response = latakoo_document.insert_document(extra_collections=['untagged'])
    return latakoo_document

任何时候重试机制都会命中。它会打印,但不会重试。

  

任务   nbcu_nes_ingest.Tasks.ClassificationTasks.insert_latakoo_object [94e5388d-f1a6-4649-a75a-207a5dcd3388]   重试:可以重试任务。

我在项目的旧版本if str == '': retry上有相同的逻辑,工作得很好。

我的本​​地开发机器是Windows 7.使用Python 3.3。芹菜版本3.1.8。

如果有任何想法请告诉我。 我已尝试使用try catch块进行操作,并提高重试次数,但似乎没有任何效果。

编辑:添加Celery App构造函数

app = Celery('ClassificationTasks', broker='pyamqp://guest@localhost//', backend='amqp',)

0 个答案:

没有答案