簡體   English   中英

為Celery禁用Django調試

[英]Disable Django Debugging for Celery

是否可以僅針對Django中的特定應用設置DEBUG = False? 啟用調試后,Celery存在已知的內存泄漏 我有一個開發服務器,我希望Celery作為服務運行,而無需調試,因此不會泄漏內存,但是我希望Django應用程序的其余部分使用調試功能,以便在測試時會顯示錯誤。

Celery沒有內存泄漏,這就是Django的工作方式:

啟用DEBUG時,Django會將每個已執行的SQL語句附加到django.db.connection.queries ,這在長時間運行的流程環境中將無限制地增長。

我猜你可以使用類似的hack:

if "celeryd" in sys.argv:
    DEBUG = False

@asksol的黑客對我沒有幫助,我必須這樣做

if "celery" in sys.argv[0]:
    DEBUG = False

因為sys.argv類似於['/path/to/celery', 'worker', '-A', 'app']

我正在使用python 3.6和celery 4

鑒於sww314對該答案的評論,建立在asksol的答案( https://stackoverflow.com/a/4806384/3009897 )的基礎上,該指示的方法在Celery 4.x中不起作用,可以改為依賴檢查模塊確定要在其中訪問DEBUG設置的執行堆棧。

對我而言,以下更改有效:

if DEBUG and 'celery' in inspect.stack()[-1][1]:
    DEBUG = False

假定最外層調用框架將在關聯的文件路徑中包含字符串“ celery”。 (對DEBUG的檢查是確保將其留在生產環境中的一種嘗試(應該設置DEBUG = False的情況下),否則不應進行檢查。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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