[英]How to call the method after all the celery group tasks are completed in python
目前我正在做 celery 組任務,我想在所有任務完成后調用 upload_local_directory(output_file) 方法。 我嘗試了以下方法,但它沒有等待工作完成。
tasks = [make_tmp_files.s(page.object_list, path + str(uuid.uuid4() + '.csv')) for page in paginator]
job = group(tasks)
job.apply_async()
job.get()
output_file = 'final.zip'
upload_local_directory_into_S3(output_file)
make_tmp_files
方法是 celery 作業方法。
“后端”也在 celery object 中定義。
如果需要更多信息,請發表評論。
celery內部有一組任務和一組任務結果的區別。 如果您要將代碼更改為以下內容,它應該可以工作:
tasks = [make_tmp_files.s(page.object_list, path + str(uuid.uuid4() + '.csv')) for page in paginator]
job = group(tasks)
job_results = job.apply_async()
job_results.get()
output_file = 'final.zip'
upload_local_directory_into_S3(output_file)
job.apply_async()
返回一組 AsyncResults。 作為用戶,您需要檢查 AsyncResult 的結果,而不是任務本身。
參考: https://docs.celeryproject.org/en/stable/userguide/canvas.html#groups
希望這會有所幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.