簡體   English   中英

芹菜消耗整個內存

[英]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.

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