1

ライブサーバーで長時間タスクを実行しています。タスクには、facebook からデータを取得し、reportlab PDF パッケージを使用して PDF を生成することが含まれます。

これらの場合、並行性レベル 5 のワーカーが 3 つあるため、30 個の PDF タスクを並行して実行できます。

ただし、一度に 10 個のタスクが実行されている場合、長時間実行されているタスクは、他のタスクを中断して、タスクのハードタイム制限 (12 時間) を期限切れにします。

しかし、私のサーバーでは、1 つの PDF タスクに最大 3 時間または最悪の場合 4 時間かかります。しかし、同時実行レベル 5 ですべてのワーカーを実行すると、一部のタスクが成功し、一部のタスクの時間制限 (12 時間) を超えています。しかし、私の目標は、これらの 10 のタスクすべてを 4 ~ 5 時間以内に完了する必要があります。

長時間実行されるタスクを処理するための最善の方法はありますか?

また、django-セロリパッケージを使用しています。
私のセロリ会議:

CELERYD_OPTS="-time-limit=43200 --concurrency=10"
CELERYD_CONCURRENCY = 10
CELERYD_NODES = "worker1 worker2 worker3"

ワーカーの実行: python manage.py celeryd_multi restart n1 n2 n3 -l info -f celery.log -c 10 --purge -Q:n1,n2,n3 backend

4

0 に答える 0