*編集:この問題につながるセロリのバグが見つかりました。だから、それはJavaScriptコードの一撃とは無関係です。この質問を閉じることを提案する。FlaskのWebサーバーで6分後にjavascriptの「setTimeout」機能が停止する
私は、このJavascript機能をFlask Webサーバー上で実行しており、これはCeleryタスクのステータスをチェックします。タスクが終了した場合はconsole.logに、それ以外の場合は2秒後に再チェックします。
セロリのタスクが6分以内に終了するとうまく動作します。しかし、6分に当たると、この機能は動作を停止するだけです。タスクがまだバックグラウンドで実行されていると確信しているにもかかわらず、Celeryタスクのステータスが再び更新されることはありません.Javascriptの結果は表示されません。
Flaskのタイムアウト設定ですか?どんな洞察にも感謝します。
function update_progress(status_url) {
// send GET request to status URL
$.getJSON(status_url, function(data) {
if (data['state'] != 'PROGRESS') {
if ('result' in data) {
console.log(data['result']);
}
else {
// something unexpected happened
console.log(data['state']);
}
}
else {
// rerun in 2 seconds
setTimeout(function() {
update_progress(status_url);
}, 2000);
}
});
}
多分見に(データ)はconsole.logを追加しようと '予期しない何かが起こっています'各反復時の生データ。 – Ibu
提案してくれてありがとう、私はこれをしました。データはよく見えます。私は手動でstatus_urlに行って、セロリのタスクが終了した後に正しい結果を得ることさえできます。 –
@Ibuに感謝して、私がセロリの仕事の「正しい結果」をダブルチェックしました。それから、問題が見つかりました。結果はシリアル化できず、$ .getJSONが失敗しました。状況が悪化する原因は、$ .getJSONが黙って失敗したことです。 $ .getJSONを$ .ajaxに置き換えてエラーメッセージを見つけました。(function(){...})fail(function(xhr、status、error){ console.log(xhr、status、error); }) –