【发布时间】:2013-03-19 09:27:14
【问题描述】:
我们有一个在 Heroku 上使用 django-celery 运行的简单任务。比如:
@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()
origin 是一个 csv 文件。当文件很大(超过 50.000 行)时,任务会占用所有内存,导致 R14 错误,直到被系统取消(在 512 MB 可用内存的 150% 处)。内存永远不会释放,我们必须手动重新启动任务。
在 Linux 机器上运行或在开发机器上与工头一起运行,它可以毫无问题地完成(全部 170.000 行)。它似乎只在 Heroku 上泄漏内存。 顺便说一句,我们使用 DEBUG=False 运行。
Heroku 执行 celery 任务是否有问题?有什么我们可以缺少的吗?这已成为在 Heroku 上部署的障碍。
任何帮助将不胜感激。
【问题讨论】:
-
只是一个一般性的调试建议:我猜这与 Django 和 Celery 都无关。为了证明这一点,我将创建一个最小的 Heroku 应用程序(没有 Django,只是一个简单的“main”)来执行此操作,并尝试运行它。如果失败,请先查看您的 requirements.txt,然后再添加调试打印。如果成功,开始逐渐添加其余的东西,直到你弄明白为止。祝你好运!
-
您确定它没有在本地使用大量内存而您只是没有注意到吗?
标签: django heroku django-celery