2016-03-19 15 views
1

私は次のことを行う必要がありフラスコ使って小規模なWebサーバーを書いている:最初のリクエストでフラスコと長時間実行タスク

  1. を、(15-60を基本的なページを提供し、長いキックオフ2番目の)データ処理タスク。データ処理タスクは、私が制御しない第2のサーバを照会し、ローカルデータベースを更新し、ウェブページに表示するために結果に対していくらかの計算を実行する。
  2. このページでは、すべて長いタスクの結果の一部に依存するいくつかのAJAXリクエストが発行されるため、処理が完了するまで待つ必要があります。
  3. 処理タスクが進行中(あるいはそのすぐ後)である一方、彼らが来た場合、最初のページのための後続の要求は、理想的には、前の要求の結果を再使用することになり

Iは、フラスコ・キャッシュ(特にSimpleCache)を使用してみました私は本当に正確なオブジェクトを保つときに、キャッシュが結果をピクルスするように見えるので、問題に遭遇しました。

私はpickle-ableにするためにキャッシュしているものを書き換えてから、処理を行うワーカースレッドを1つ実装するとします。

このようなワークフローを処理するには、より良い方法がありますか?

答えて

2

長時間のデータ処理に最適な方法は、Celeryのようなものだと思います。

  1. タスクを実行してタスクIDを受け取る要求を送信します。
  2. ajaxリクエストを定期的に送信して、タスクの進行状況を確認し、タスクの実行結果を受け取ります。
関連する問題