簡體   English   中英

python中celery組任務全部完成后如何調用方法

[英]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 中定義。

如果需要更多信息,請發表評論。

您可以鏈接您的組和最終的make_tmp_files任務,或者使用Chord來完成相同的任務。 如果您看到 Celery 自動將組+任務鏈轉換為 Chord,請不要驚慌。

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.

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