質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
Flask

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

4171閲覧

flaskアプリケーションが自動でhost0.0.0.0で立ち上がるのをなんとかしたい

sequelanonymous

総合スコア123

Flask

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

3クリップ

投稿2019/01/17 11:17

flaskの二つのアプリを同時にローカルで立ち上げて、アプリ同士の疎通テストを行いたいが、できない。
host名を変えるなり、portを変えるなりして確認したいが、修正しても変更されずhost='0.0.0.0', port=8080で立ち上がってしまいます。
どうすれば、二つのアプリを同時にたちあげることができますでしょうか?

python

1if __name__ == '__main__': 2 # Run the development server 3 app.run(host='0.0.0.0', port=8080, debug=True)

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

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

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

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

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

can110

2019/01/17 12:43

当方環境ではポート変更できています。 ポート修正部分のソースと実行時のサーバー起動ログ(* Serving Flask app ~など)を提示ください。
nico25

2019/01/17 13:29 編集

もしかして「修正しても変更されず」ということは flask run で起動していないでしょうか? flask run で起動していれば、その症状が発生するはずです。 ``` $ # これではなく $ flask run ``` ``` $ # これ $ python 自分で書いたFlaskのアプリ.py ``` また私の環境でも 異なる IP アドレス(0.0.0.0 と 0.0.0.1) を指定しようとするとOSError で弾かれましたが OSError: [Errno 49] Can't assign requested address 異なるポートは(8080 と 8081) を指定すれば上手く動作するのを確認しています。 (回答を削除リクエスト中です。コメントレベルだったので..)
sequelanonymous

2019/01/18 03:13

can110さん、nico25さん、ご回答ありがとうございます! 問題は、nico25さんのおっしゃる通りでpython で起動していたためでした。python . pyとflask runでは、デフォルトで起動するポート番号が異なるからだと思いますが、にしても、コードで指定したポート番号が反映されないのはおかしい気がしているのでもし、ご存知でしたら回答欄に仕組みをご教示頂ければと思います。
can110

2019/01/18 06:36

仕組み(理由)はnico25さんの回答のとおりかと思います。 対処法について回答しました。
guest

回答2

0

flask runで起動する場合はflask run -h localhost -p 3000のようにしてホスト名とポートを指定できます。
参考:Why can't I change the host and port that my Flask app runs on?

投稿2019/01/18 06:32

編集2019/01/18 06:33
can110

総合スコア38262

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

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

sequelanonymous

2019/01/18 06:47

別解決策ありがとうございます!これを採用してみます。 お二方にベストアンサーにした気持ちですが、早く回答して頂いた方をベストアンサーにさせていただきたく思います。ありがとうございます!
guest

0

ベストアンサー

よかった、正解でしたか笑
斜体 の変数名はアンダーバー __ で囲まれた名前です。
teratail だと _ で、エスケープできなかったので...)

(1) flask run した場合

「自分で書いたFlaskのアプリ.py」 が import されます。
import されるということは
ライブラリとして読み込まれる ということです。

ライブラリとして読み込まれた場合、
name には 「自分で書いたFlaskのアプリ」 が代入されます。
そのため if name == 'main': 以降は 実行されません

じゃあどうやって app.run しているのかが疑問なのですが、
名前 app に代入されたオブジェクトを Flask 側で勝手に使って起動しているようです。
(公式ドキュメントで探してきれていないのですが)

(2) python 自分で書いたFlaskのアプリ.py した場合

このとき「自分で書いたFlaskのアプリ.py」は
スクリプトとして実行される ということです。

スクリプトとして実行された場合、
name には 「main」 が代入されます。
そのため if name == 'main': 以降は 実行されます

この辺りの import に関する挙動は、こちらにまとめてあります。
Python の import 文ってなに?

投稿2019/01/18 03:59

編集2019/01/18 04:00
nico25

総合スコア830

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

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

sequelanonymous

2019/01/18 06:45

とてもご丁寧にありがとうございます!とてもわかりやすく、ためになります。助かりました。
nico25

2019/01/18 07:38

そう言っていただけると嬉しいです!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問