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