0
私のdjangoアプリケーションでは、再発行エンドポイントにヒットした後、その機能がトリガーされてそのステータスを確認するアクション(再発行アクション)によってトリガーされる関数があります。別のAPI呼び出しで30分。その機能は次のとおりです。djangoで30分のAPIコールを実行する方法
timeout = time.time() + 60 * 30
published_flag = False
while time.time() < timeout:
data = requests.get(apiUrl + dist_id).json()
try:
published_flag = data['flags']
if published_flag:
break
else:
time.sleep(5)
continue
except KeyError:
break
このタイムアウトは30分であり、非常に長くなります。しかし、フラグ状態が変わる最悪のシナリオは30分です。このアクションは、複数回トリガーすることができます(複数の再発行ボタンを押すことができます)。エンドポイントが実質的にタイムアウトするのは、エンドポイントが動作するには長すぎるためです。だから私はフロントエンドにWebソケットを介してデータをプッシュします。
これを行うにはスマートな方法がありますか?
「セロリー」http://www.celeryproject.orgを使って低速なタスクをバックグラウンドで実行することができます。タスクが完了したときにクライアントに通知するWebソケット接続を維持します。 – Enix
しかし、一度に6-7の再発行を行うことができます。だから、それぞれのために、私は労働者の数を調整するのですか? – foxtrot3009
はい、あなたが原因です。セロリのチュートリアルhttp://docs.celeryproject.org/en/latest/userguide/workers.html#starting-the-workerを見ることができます – Enix