84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
小伙看你根骨奇佳,潜力无限,来学PHP伐。
Flask に付属するサーバーは、明らかに本番環境では使用できません。個人的には、慎重に設計されたパラメーターを使用して、外側のレイヤーにも nginx を含めることをお勧めします (普遍的な公式はありません。実践に基づいて調整します) サーバー リソースの同時処理能力のより良いバランスを実現できます。つまり、同時実行テクノロジを使用せずに単一のプロセスを実稼働環境に配置することは絶対に不可能です。これは決して簡単ではありません。
私のこれまでの gevent の経験はそれほど素晴らしいものではなく (まだ 1.0 ではありませんでした)、モンキー パッチを適用すると追加の問題が発生する可能性がありました。ですので、特にお勧めするものではありません。
OAuth の話に戻りますが、問題は access_token を取得するステップにあると述べられているため、OAuth Authorization Code Grant プロセスが使用され、最終ステップに入るということになります。フローを確認してみましょう (OAuth 2 仕様から抜粋):
理論的には、ブラウザーがステップ (C) を通じて Flask にリクエストを送信した後、ブラウザーでは他に何もすることはありません (その後の処理はプロセスの一部ではありません)。Flask は単純に 200 OK を返してデザインを行うことができます。後でブラウザが AJAX 経由で Flask にデータをリクエストすることで、Flask がステップ (D) を実行して (E) を待つ必要がなくなりました ((E) は問題が発生するステップです)。
もちろん、以前の並行処理と負荷分散が行われており、ユーザー数がそれほど多くない場合は、Flask は直接リクエストを行うことができます。もちろん、リクエストのサイズが十分に大きい場合、Flask は非同期タスクを開始し、特殊なタスク実行コンポーネントに操作を実行させることができます。
以前、私が開発したプロジェクトでは、RabbitMQ を介してタスクを送信するために celery を使用していました。完了までに一定の時間がかかるこれらのタスクは、特別なプログラムによって処理され、タスクの結果は Redis に保存され、毎回数千万件の同様のインターフェイス呼び出しが処理されます。日。
具体的には、リクエスト (C) が Flask に到達すると、Flask は RabbitMQ にタスクを送信し、200 OK を返します。対応するタスク実行コンポーネントはステップ (D) を実行し、応答 (E) を取得し、結果が Redis に書き込まれます。一定の時間が経過すると、ブラウザは再び Flask に後続の情報を要求します。このとき、Flask は Redis にアクセスしてタスクの実行が成功したかどうかをクエリし、それに応じて応答します。
これが質問者にとって役立つことを願っています。
gevent を使用して Flask を非同期にすることができます。
Flask
プログラムの先頭に次のように追加します:
参考:
http://sergray.me/asynchony-in-the-flask.html
http://xlambda.com/gevent-tutorial/#monkey-patching
Flask は元々シングルスレッドです。wsgi を使用して、nginx や gunicorn などのサーバーを前に追加してマルチスレッドを実現できます。 Tornado はシングルスレッドかつ非同期なので、Flask とは互換性がないようです。
みんながこの問題をどうやって解決するか見てみましょう。恥ずかしい。 。 。
ps: 件名は DEBUG モードを使用しているため、ログを投稿できます。
DEBUG
ビューで urllib2 を使用して Google にアクセスしようとしましたが、それでも応答しましたが、最終的にエラーが報告されました:
urllib2
テスト中、Flask 応答時間は確かに非常に遅かったです。この種の非同期タスクを処理するには、Celery を使用することをお勧めします。現在、Celery
Celery
ご自身の質問に答えるために、Flask ではマルチスレッドを有効にできますが、運用環境では依然として Nginx が必要です。
Flask の組み込み server は werkzeug です。デフォルトの werkzeug はシングルスレッドであり、外部リクエストはブロックされます。 @Liu Yihan と入力してマルチスレッドを有効にできます。
server
werkzeug
Flask 自体はシングルプロセスおよびシングルスレッドではありません。実稼働環境では、マルチスレッドは uwsgi または gunicorn によって実装されます。 flask の使用法は正しいです。フラスコのデプロイメント方法は、uwsgi、gunicron、または gevent と組み合わせる必要があります。
uwsgi
gunicorn
flask
gunicron
gevent
非同期リクエストの結果を気にしない場合は、Redis を使用して単純なメッセージ キューを実装するか、セロリを使用して非同期リクエストを実装できます
Flask に付属するサーバーは、明らかに本番環境では使用できません。個人的には、慎重に設計されたパラメーターを使用して、外側のレイヤーにも nginx を含めることをお勧めします (普遍的な公式はありません。実践に基づいて調整します) サーバー リソースの同時処理能力のより良いバランスを実現できます。つまり、同時実行テクノロジを使用せずに単一のプロセスを実稼働環境に配置することは絶対に不可能です。これは決して簡単ではありません。
私のこれまでの gevent の経験はそれほど素晴らしいものではなく (まだ 1.0 ではありませんでした)、モンキー パッチを適用すると追加の問題が発生する可能性がありました。ですので、特にお勧めするものではありません。
OAuth の話に戻りますが、問題は access_token を取得するステップにあると述べられているため、OAuth Authorization Code Grant プロセスが使用され、最終ステップに入るということになります。フローを確認してみましょう (OAuth 2 仕様から抜粋):
リーリー理論的には、ブラウザーがステップ (C) を通じて Flask にリクエストを送信した後、ブラウザーでは他に何もすることはありません (その後の処理はプロセスの一部ではありません)。Flask は単純に 200 OK を返してデザインを行うことができます。後でブラウザが AJAX 経由で Flask にデータをリクエストすることで、Flask がステップ (D) を実行して (E) を待つ必要がなくなりました ((E) は問題が発生するステップです)。
もちろん、以前の並行処理と負荷分散が行われており、ユーザー数がそれほど多くない場合は、Flask は直接リクエストを行うことができます。もちろん、リクエストのサイズが十分に大きい場合、Flask は非同期タスクを開始し、特殊なタスク実行コンポーネントに操作を実行させることができます。
以前、私が開発したプロジェクトでは、RabbitMQ を介してタスクを送信するために celery を使用していました。完了までに一定の時間がかかるこれらのタスクは、特別なプログラムによって処理され、タスクの結果は Redis に保存され、毎回数千万件の同様のインターフェイス呼び出しが処理されます。日。
具体的には、リクエスト (C) が Flask に到達すると、Flask は RabbitMQ にタスクを送信し、200 OK を返します。対応するタスク実行コンポーネントはステップ (D) を実行し、応答 (E) を取得し、結果が Redis に書き込まれます。一定の時間が経過すると、ブラウザは再び Flask に後続の情報を要求します。このとき、Flask は Redis にアクセスしてタスクの実行が成功したかどうかをクエリし、それに応じて応答します。
これが質問者にとって役立つことを願っています。
gevent を使用して
Flask
を非同期にすることができます。プログラムの先頭に次のように追加します:
リーリー参考:
http://sergray.me/asynchony-in-the-flask.html
http://xlambda.com/gevent-tutorial/#monkey-patching
Flask は元々シングルスレッドです。wsgi を使用して、nginx や gunicorn などのサーバーを前に追加してマルチスレッドを実現できます。 Tornado はシングルスレッドかつ非同期なので、Flask とは互換性がないようです。
みんながこの問題をどうやって解決するか見てみましょう。恥ずかしい。 。 。
ps: 件名は
DEBUG
モードを使用しているため、ログを投稿できます。ビューで
urllib2
を使用して Google にアクセスしようとしましたが、それでも応答しましたが、最終的にエラーが報告されました:テスト中、
の使用方法を学習しています。Flask
応答時間は確かに非常に遅かったです。この種の非同期タスクを処理するには、Celery
を使用することをお勧めします。現在、Celery
ご自身の質問に答えるために、Flask ではマルチスレッドを有効にできますが、運用環境では依然として Nginx が必要です。
リーリーFlask
の組み込みserver
はwerkzeug
です。デフォルトのwerkzeug
はシングルスレッドであり、外部リクエストはブロックされます。 @Liu Yihan と入力してマルチスレッドを有効にできます。Flask
自体はシングルプロセスおよびシングルスレッドではありません。実稼働環境では、マルチスレッドはuwsgi
またはgunicorn
によって実装されます。flask
の使用法は正しいです。フラスコのデプロイメント方法は、uwsgi
、gunicron
、またはgevent
と組み合わせる必要があります。非同期リクエストの結果を気にしない場合は、Redis を使用して単純なメッセージ キューを実装するか、セロリを使用して非同期リクエストを実装できます