我们在 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 上部署的阻碍。
任何帮助将不胜感激。