我们有一个简单的任务,在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