現在、従来のリクエスト/レスポンススタイル(クライアントはモバイルアプリケーション)で動作するFlaskを使用したAPIを開発しました。このAPIは、リモートサーバー上のApacheを使用してホストされます。私たちがしたいのは、(チャットアプリのように)サーバーとクライアントの間のリアルタイム接続を統合することです。これは私が立ち往生したところです。私はここでフレームワークの選択をする必要があります。 TornadoをFlaskで使用するのは良い選択ではありません。なぜなら、Tornadoは非ブロックでFlaskがブロックしているからです。この場合、何が最良の選択でしょうか?フラスコAPIのリアルタイム接続を統合するための最良の選択肢は何でしょうか?
答えて
今日のWebアプリケーションのリアルタイム機能を提供するデフォルトのソリューションは、Webソケット(Google Flask + Websocketをご利用ください)です。同時実行性が問題である場合(つまり、多くの永続的な同時接続)、WebSocketを処理するソフトウェアの「チェーン」は非ブロッキングでなければなりません。フラスコはgevent(Pythonのstdlibの非ブロックモンキーパッチ)をサポートしていますので、フラスコを使用し続けることができますが、常にnon-blockingなので、リバースプロキシとしてnginxを使用する方が良いでしょう。たとえば、nginx + gevent +フラスコは非ブロック設定を提供します。
個人的には、私はトルネードが大好きですが、すでにFlaskで長い道のりを歩いていれば、あなたのアプリケーションに別のフレームワークを導入することには消極的です。
ここでは 'Celery'を使うのがいいでしょうか?つまり、接続のためにエンドポイントを公開することができ、リクエストごとに 'Celery'タスクを呼び出すことができます。たとえば、メッセージを送信する場合は、そのためのタスクがあり、プッシュ通知を使用してメッセージを配信できますか? – MrPyCharm
Celeryは、通常はWebアプリケーションの外部で実行される非同期タスクプロセッサです。したがって、別々のタスクプロセスを採用することが合理的であれば、リアルタイムユースケースの種類(たとえば、同時実行性、IO帯域幅、CPUスループットなど)によって異なります。 –
- 1. Instagram APIのリアルタイム制限
- 2. データベース接続プーリング・ライブラリの最良の選択肢は何ですか? (c3p0の問題)
- 3. 標準選択ソートアルゴリズムの最良のシナリオは何でしょうか?
- 4. SaaSアプリケーションの冗長性を拡張するための最良の選択肢は何ですか?
- 5. Djangoでopeninviterの良い選択肢は何ですか
- 6. フラスコwtforms selectfield選択肢は以下の
- 7. 顧客や統合されたデータベースのためのデータベースは何が良いでしょうか?
- 8. Angular2でnativeElementを使用してDOMにアクセスするための良い選択肢は何ですか?
- 9. タイミングの選択肢は何ですか?
- 10. タイムマネージメントソリューションの選択肢は何ですか?
- 11. ラジオボタンの選択肢は何ですか?
- 12. 会計分野のソフトウェアを設計する最良の選択肢(WinFormまたはWPF)は何ですか?
- 13. es6統合のための良い戦略は何ですか?
- 14. ColdFusionでマークダウンを使用するための選択肢は何ですか?
- 15. CodeigniterプロジェクトをFacebook APIに接続する最良の方法は何ですか?
- 16. SMSゲートウェイのKannelに代わるオープンソースの良い選択肢は何ですか?
- 17. .NETでの複数継承の良い選択肢は何ですか?
- 18. Android用に開発するための選択肢は何ですか?
- 19. 私はダイナミックキャスティングを取り除きたいと思います。何が最良の選択肢ですか?
- 20. WCF休憩のための私の選択肢は何ですか?
- 21. 単一のWinformで異なるフォームを表示するための最良のアクションコースは何でしょうか?
- 22. Objective-CアプリケーションをWindowsに移植します。最良の選択肢は何ですか?
- 23. データモデルを記述するための良いデータモデルは何でしょうか?
- 24. Frontend Web開発言語/フレームワークとして、2017年2月現在の最良の選択肢は何ですか?
- 25. 私のプロジェクトの接続文字列は何でしょうか?
- 26. 異なるエンティティに「アドレス」を格納するための最良のスキーマは何でしょうか?
- 27. あらかじめ選択された選択肢の角度
- 28. ユニークな使用のためにデータを暗号化する最良の方法は何でしょうか?
- 29. jQueryは、選択肢で「選択」された特定の選択肢を選択します。
- 30. 選択肢から選択肢を選択し、表のセルに選択肢の情報を表示
間違ったアイデアかもしれませんが、 "あなた自身で書き込みをしてください!"、あなたはリアルタイムで考えています。決してpython 'network-module'は' socket'より高速です! – dsgdfg
あなたは 'socket'を使うべきですか?最初から書き込むべきですか?私はあなたのコメントを正しく理解できませんでした。 – MrPyCharm
はい、新しいものを書いてください!ほとんどのアプリケーション情報は、「最小、高速、安全」、「最小」が重要な理由は何ですか? 「高速RAM(DDR3)のためのメインボードを購入する」というよりSDRAMより速く決めるのではなく、「技術」は何かを間違った選択にしている。 – dsgdfg