我创建了一个部署在Heroku上的Django应用。该应用正在处理一项重要的后台任务(需要5到10百万分钟才能运行)。它涉及抓取数据并创建图形可视化。后台任务通过Celeri应用处理。 Celeri和Django之间的通信是通过Redis完成的。
一切在本地都运行良好。抓取少量数据(具有50行的数据框),一切工作正常。但是,一旦我增加了使用的数据量(数据帧> 50行),Heroku工作程序便崩溃了,而没有任何错误消息。
2020-05-18T12:32:11.945988+00:00 app[web.1]: 10.101.144.240 - - [18/May/2020:12:32:11 +0000] "GET /task/bef2fea5-b7f7-4c37-b32e-2a7888486925/ HTTP/1.1" 200 77 "https://community-detection-instagram.herokuapp.com/parameters/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36"
2020-05-18T12:32:14.039229+00:00 heroku[worker.1]: State changed from up to crashed
2020-05-18T12:32:14.042067+00:00 heroku[worker.1]: State changed from crashed to starting
在创建剧情期间一直发生 ,这是我的后台任务的最后一步。
同样,当我仅抓取少量数据(甚至在生产中)时,可视化效果很好。我以为这可能是内存问题,但看来我没有全部使用。
screen of the memory usage from heroku
我很想知道你的想法。后台任务对于Heroku / Redis来说是否太繁重?为什么工人崩溃而没有任何错误消息?
PS:我不将抓取的数据存储在数据库中。它只是在后台任务抓取阶段创建的500行熊猫数据框。可能有问题吗?
答案 0 :(得分:0)