【发布时间】:2017-05-15 20:30:09
【问题描述】:
我在 Heroku 上有一个 celery 任务,它连接到外部 API 并检索一些数据,存储在数据库中并重复数百次。很快(大约 10 次循环后)Heroku 开始警告高内存使用情况。有什么想法吗?
tasks.py
@app.task
def retrieve_details():
for p in PObj.objects.filter(some_condition=True):
p.fetch()
models.py
def fetch(self):
v_data = self.service.getV(**dict(
Number=self.v.number
))
response = self.map_response(v_data)
for key in ["some_key","some_other_key",]:
setattr(self.v, key, response.get(key))
self.v.save()
英雄日志
2017-01-01 10:26:25.634
132 <45>1 2017-01-01T10:26:25.457411+00:00 heroku run.5891 - - Error R14 (Memory quota exceeded)
Go to the log: https://api.heroku.com/myapps/xxx@heroku.com/addons/logentries
You are receiving this email because your Logentries alarm "Memory quota exceeded"
has been triggered.
In context:
2017-01-01 10:26:25.568 131 <45>1 2017-01-01T10:26:25.457354+00:00 heroku run.5891 - - Process running mem=595M(116.2%)
2017-01-01 10:26:25.634 132 <45>1 2017-01-01T10:26:25.457411+00:00 heroku run.5891 - - Error R14 (Memory quota exceeded)
【问题讨论】:
-
能否请您发布从
fetch调用的方法的方法主体? -
@Avi 你还记得你是如何解决这个问题的吗?你使用了用户 2ps 的建议吗?
标签: python django heroku django-celery