3

次のコードがある場合:

$('#do-updates').click(function() {
    $.post('/do_updates/', 
       function(response){
          location.reload();
    });
});

そして、それが呼び出す python 関数は次のとおりです。

def do_update():
    for item in items:
        do something

私が呼び出す python 関数は、完了するまでに約 2 分かかります。

ユーザーが次の操作を行った場合:

1 - Click on the #do-updates button
2 - Navigate away from the page after 10s

何が起こるか?do_updates()非同期で呼び出されるため、関数全体が実行されますか? または、その機能はタイムアウトしますか? do_updates()タイムアウトした場合、バックグラウンドで関数を実行して終了させるより良い方法は何ですか?

4

1 に答える 1

2

フロントエンドで do_something の結果が必要ない場合は、非同期タスク ソリューションを使用できます。Celeryはおそらく最も人気があり、django で簡単に使用できます。メッセージング キュー (rabbitmq、redis、..) を介して、別のプロセスとして実行されている専用ワーカーに作業を委任します。

于 2013-10-27T20:27:05.793 に答える