私はフラスコで新たに始まり、いくつかのリクエストを処理するサーバーアプリケーションを作成しています。今はPOSTリクエストの部分には時間がかかります彼が送った最初のPOSTリクエストに応答するまで、私はモバイルアプリのユーザーを待たなければなりません。フラスコはユーザーに "OK"を返し、データを処理します
たとえばモバイルアプリにOK
を返して、バックグラウンドでデータを処理できる方法はありますか?
私がこれまで考えてきたことのようになります。 -
if request.method=='POST':
#signal another process (another python file for example) to start with parameters from the request
return "OK"
しかし、私はそれがベストプラクティスであることを確認していない、任意の他のアイデア?私はダウンロードしてRedisのと一緒に窓の上にそれをインストールしたセロリをインストールするのアドバイス以下
EDIT
。
from flask import Flask
from celery import Celery
app = Flask(__name__)
app.config['CELERY_BROKER_URL'] = 'redis://localhost:6379/0'
app.config['CELERY_RESULT_BACKEND'] = 'redis://localhost:6379/0'
celery = Celery(app.name, broker=app.config['CELERY_BROKER_URL'])
celery.conf.update(app.config)
とExtractFeatures()
機能について:Redisの構成と私のセレラため
TypeError: ExtractFeatures() takes exactly 2 arguments (1 given)
:私は、POSTリクエストを発行しようとすると、私はブローカーワーカーセロリが実行されているが、私は次のように取得しています持っている
POSTリクエストのためのdef ExtractFeatures(JsonRecieved):
#testing for now sleep for 5 seconds to make sure code executes this
#function parallel and finishes the request handling
time.sleep(5)
print("finished Extracting Features")
:
@app.route('/PostPhotos',methods=['POST'])
def api_PostPhotos():
if request.method=="POST":
ExtractFeatures.delay(request.json)
return("finished request")
私の期待は、「完成した要求」が「完成した抽出機能」の前に印刷されることですが、上記のエラーが表示されます。
セロリのようなものが必要です。 –
@DanielRosemanあなたが私を助けることができるならば私は新しい編集を追加しました –