gap*_*nco 6 django heroku django-celery
我们在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()
Run Code Online (Sandbox Code Playgroud)
凡起源是一个CSV文件.当文件很大(超过50,000行)时,任务会占用所有内存,从而导致R14错误,直到被系统取消(150%的可用内存为512 MB).内存永远不会释放,我们必须手动重启任务.
在Linux机器上运行或在开发机器上运行,它完成没有问题(所有170.000行).它似乎只是在Heroku上泄漏内存.顺便说一句,我们运行DEBUG = False.
Heroku实施芹菜任务会破坏什么?我们可以缺少什么?这已经成为在Heroku上部署的一个显示器.
任何帮助将受到高度赞赏.
我同意 JoshB 的观点,您的情况似乎需要超过 512MB 的内存。
如果您创建任务process_line并创建它们的队列而不是处理整个文件的任务,该怎么办?在这种情况下,您在 Heroku 上的内存不会超载。
另一种可能的解决方案是 Heroku 的新服务,您可以在测功机上使用 1GB RAM。链接: 2x dynos beta
| 归档时间: |
|
| 查看次数: |
535 次 |
| 最近记录: |