🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2772閲覧

WSGIServer(×flask)をマルチプロセス化する方法

kurumilk

総合スコア2

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2021/02/20 12:16

編集2021/02/24 04:57

WSGIでflaskを用いてwebアプリ開発の勉強をしています。↓URLをなぞっています。
https://qiita.com/shiro-kuma/items/0607e01a19e093fdb631

ここで、
WSGIServerで、複数アクセス時にも同じ画面を表示させる方法が知りたいです。

↓等では、マルチスレッドに対応している旨が説明されています。
https://qiita.com/5zm/items/251be97d2800bf67b1c6

ただ、flask×WSGIでマルチスレッドに動かす方法が分かりません。

#[追記]
サーバーを実行している場所の記述は以下になります。

===================
while True:
app.debug = True # サーバーからのデータ送信(websocket)
server = pywsgi.WSGIServer(('0.0.0.0', 8000), app, handler_class=WebSocketHandler) 
server.serve_forever()

===================

ご指導いただければ幸いです。

なお、環境はwindows 10です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TakaiY

2021/02/20 13:35

Flaskをマルチプロセス化するには、gnicornなどのWSGIサーバを使うのが普通だと思うのですが、そうしない理由はなんでしょう?
quickquip

2021/02/20 14:56 編集

> WSGIServerで、複数アクセス時にも同じ画面を表示させる方法が知りたいです。 と > ただ、flask×WSGIでマルチスレッドに動かす方法が分かりません。 がぜんぜん違う話に見えるのですが、本当の"知りたいこと"はどっちでしょう? (あるいはどっちでもないか)
kurumilk

2021/02/22 00:29

TakaiY様 回答ありがとうございます。 Flaskをマルチプロセス化するため、WSGIサーバーを立て、websocket通信を行っています。 この条件でマルチプロセス化は可能なのでしょうか。 quickquip 様 回答ありがとうございます。 プロセスとスレッドの用語をきちんと把握していませんでした。 現状は2つ以上のアクセスがあった場合に、2個目以降は処理待ちになってしまいます。 それを解決したいです。これはflaskをマルチプロセスにすれば良いのでしょうか。 WSGIServer側、flask、どこに課題があるのかが不明確であるため、知りたいことが曖昧になっているのだと思います。
quickquip

2021/02/22 01:35 編集

現時点でサーバ起動のために実行しているコマンドと引数を明示するといい気がしました。(質問を編集して追記してください)
kurumilk

2021/02/23 04:37

quickquip様 ご指摘ありがとうござます。 追記いたしました。 何が分かっていないのか分からない状態なため、ご迷惑をおかけして申し訳ありません。
guest

回答1

0

ベストアンサー

WSGIサーバーとしてgunicornやuWSGIを使いましょう。

それぞれマルチプロセスでの処理に対応しています。 設定方法はドキュメントを見ていただければわかると思います。

投稿2021/02/22 02:20

TakaiY

総合スコア13758

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kurumilk

2021/02/23 04:14

ありがとうございます。 調べると、"gunicorn"は windowsに未対応みたいでした。 uWSGIについても、調べてみます。
TakaiY

2021/02/23 05:27

windowsでやるとすると、Apache + mod_wsgi とかになると思いますけど、かなり面倒だと思うのであまりお勧めできませんね。 WSLを使えばgunicornも入ると思うので、そちらを検討するのはどうでしょう。
kurumilk

2021/02/24 02:21

ありがとうございます。 WSL検討してみます。
TakaiY

2021/02/24 03:06

いまさら思ったのですが、これ、運用はWindowsでやるのでしょうか? そうであれば、Apache+mod_wsgi で動かすのが現時点では一般的だと思います。 運用するのでなければ、WSLなどやりやすい方法でいいかと。
kurumilk

2021/02/24 04:56

windowsです。 なので、Apache + mod_wsgiが適切ということでしょうか。
TakaiY

2021/02/24 08:28

質問に「webアプリ開発の勉強」とありましたね。 将来的にどうするのがいいかという方向で考えると、自分のWindows PCをWebサーバにすることは少ないと思うので、サービスをするのであれば、Webサーバを立てることになるでしょう。 その場合、サーバはLinuxになることが多いでしょうから、とりあえず,Linuxで動く仕組みを習得するのがいいと思われます。 ということであれば、WSLでgunicornとかuWSGI使うのがいいのではないかと思います。 古いPCをLinuxマシンにしたててもいいでしょうし、VMを使うという手もあります。 また、仕事であれば、Windowsサーバで動かす、しかもApacheで運用されているということもよくある話なので、Apacheでやってみるのもありでしょう。 いずれにしても、いろいろやってみるのがいいと思いますよ。
kurumilk

2021/02/25 04:23

ありがとうございます。 AWS EC2でのlinux環境でサーバを立て、色々と試したいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問