2

この質問に基づいて:

Django Celery 制限時間を超えましたか?

しばらく実行する可能性のあるタスクがいくつかあります。ただし、ほとんどのタスクは数秒以上かかることはありません。これらの長時間実行されるタスクを考慮して、グローバル タイムアウトを設定したくありません。むしろ、短いグローバル ハード タイムリミットを設定し、必要なタスクを手動で調整してタイムアウトを長くしたいと考えています。

@task でタスクを装飾するとき、私は @task(timeout=None) を実行しましたが、そのタスクはまだ 300 秒のタイムアウトに達しています。task_function.delay(args) でタスクを呼び出しました。

タスクを呼び出してタイムアウトをカスタマイズする方法はありますか?

4

2 に答える 2

3

This issue addresses the case when you can call a task with custom timeouts. It is implemented in issue802 branch but isn't in master yet. You can merge it with master and use the desired functionality.

With this patch, you can pass timeouts when calling tasks.

tasks.add.apply_async(args=[1,2], soft_timeout=2, timeout=5)

于 2012-07-04T10:30:43.063 に答える
2

実行しているセロリのバージョンは何ですか? タスクのタイムアウトを設定するための正しい引数としての現在の安定版ドキュメントリストと、時間制限が指定されていない場合はワーカーのデフォルトが使用されること。time_limitタスクに長い (たとえば 60 分) タイムアウトを設定するには、次を使用できます。

@task(time_limit=3600)
def mytask():
    ...

または、apply_async を使用して、タスクを呼び出すときの時間制限を変更できます。

mytask.apply_async(time_limit=3600, args=args)
于 2012-07-03T01:47:15.097 に答える