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 行を超える) 場合、タスクはすべてのメモリを占有し、システムによってキャンセルされるまで (512 MB の使用可能なメモリの 150% で) R14 エラーが発生します。メモリが解放されることはなく、タスクを手動で再起動する必要があります。
Linux マシンで実行するか、開発マシンで職長と一緒に実行すると、問題なく完了します (全 170.000 行)。Heroku でのみメモリ リークが発生しているようです。ちなみにDEBUG=Falseで実行しています。
セロリ タスクの Heroku 実装で何かが壊れていますか? 欠けているものはありますか?これは、Heroku にデプロイする際の目玉となっています。
どんな助けでも大歓迎です。