我們有一個簡單的任務,在Heroku上運行django-celery。喜歡的東西:Heroku芹菜背景任務
@task
Simple_task():
for line in csv.reader(origin):
process_line(line)
process_line(line):
fields = parse_line(line)
reg = Model1() # Django model
reg.field1 = fields[0]
reg.field2 = fields[1]
reg.field3 = fields[2]
reg.save()
凡起源是一個CSV文件。當文件很大時(超過50,000行),該任務佔用所有內存,給出R14錯誤,直到被系統取消(在512 MB的可用內存的150%)。內存永遠不會被釋放,我們必須手動重啓任務。
在Linux機器上運行或者在開發機器上運行,它完成時沒有問題(全部爲170.000行)。它似乎只在Heroku上泄漏內存。順便說一句,我們用DEBUG = False運行。
用Heroku實現芹菜任務會破碎嗎?我們可能會遺漏什麼?這已成爲在Heroku上部署的一個顯示屏。
任何幫助將不勝感激。
只是一個普遍的調試建議:我的猜測是這與Django和Celery都沒有關係。爲了證明這一點,我將創建一個最小化的Heroku應用程序(不包括Django,只是一個簡單的「主」),然後嘗試運行它。如果失敗,請首先查看您的requirements.txt並稍後添加調試打印。如果成功,開始逐漸添加剩下的東西,直到找出結果。祝你好運! –
你確定它沒有在本地使用大量的內存,你只是沒有注意到? – JoshB