[英]Celery consuming whole memory
我有一個關於芹菜的問題。
我將大量數據發送到任務隊列。
我只是嘗試了太多任務數據,以至於它不適合我的記憶。 結果是芹菜被殺死,因為它占用了整個系統的內存。
盡管消息未寫入磁盤(經紀人rabbitmq)
CELERY_DEFAULT_DELIVERY_MODE = 'persistent'
被設置。
我的任務如下所示:
group(some_iterator).apply_async()
芹菜是否首先嘗試序列化整個數據(我正在使用泡菜),然后將其發送到任務隊列?
如果運行較少的數據,則可以看到任務已寫入磁盤。
謝謝你的幫助!
我發現可以實現此行為:
result_group = GroupResult(results = [])
for task_args task_arg_generator:
task = analyze_task.delay(*task_args)
result_group.add(task)
result_group.get()
# or :
result_group.join_native()
這將序列化並單獨發送每個任務,並將其收集在ResultGroup中,該結果組可用於檢索組結果。
但是我選擇的解決方案是將數據存儲在數據庫中,然后讓工作人員通過id來獲取數據。
希望能幫助一些面臨同樣問題的人!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.