Celery在Django下使用的記憶體洩漏問題

2021-07-15 05:23:23 字數 566 閱讀 8871

在django下使用celery作為非同步任務系統,十分方便。

同時celery也提供定時任務機制,celery beat。使用celery beat 可以為我們提供 cron,schedule 形式的定時任務。

在django下使用celery beat的過程中,發現了 celery beat程序 占用記憶體非常大,而且一直不釋放。

懷疑其有記憶體占用不釋放的可能。

因為之前使用django的時候,就知道在django中開啟debug模式,會為每次的sql查詢 快取結果。

celery beat 作為 定時任務的timer和heartbeat程式,是長期執行的,而我使用了mysql作為儲存定時任務的backend。因為每次heartbeat和timer產生的sql查詢在開啟了debug模式下的django環境中,都會快取查詢結果集。因此 celery beat占用的 記憶體會一直不釋放。在我的線上環境中 達到10g記憶體占用!

解決: 關掉django的debug模式,在setting中,設定debug=false 即可。

關閉debug模式後的celery beat程式 的記憶體占用大概 一直維持在150m左右。

Celery在Django中的使用

celery 是乙個強大的分布式任務佇列,它可以讓任務的執行完全脫離主程式,甚至可以被分配到其他主機上執行。我們通常使用它來實現非同步任務 async task 和定時任務 crontab 非同步任務 比如傳送郵件 手機驗證碼,或者檔案上傳,影象處理等等一些比較耗時的操作 定時任務 需要在特定時間執...

在django中使用 配置 celery

通俗來說,celery是python的乙個非同步佇列伺服器。在我們日常web應用中,當請求乙個後端介面的時候,都是等待該介面的業務完成後再返回。那麼如果這個介面執行的任務很漫長,就可能造成服務阻塞甚至http請求超時。那麼如果web介面要執行很長時間的任務,又要保證即時給前端響應,就可以將很耗時間的...

非同步任務佇列Celery在Django中的使用

前段時間在django web平台開發中,碰到一些請求執行的任務時間較長 幾分鐘 為了加快使用者的響應時間,因此決定採用非同步任務的方式在後台執行這些任務。在同事的指引下接觸了celery這個非同步任務佇列框架,鑑於網上關於celery和django結合的文件較少,大部分也只是粗粗介紹了大概的流程,...