LoginSignup
5
4

More than 3 years have passed since last update.

flaskが2回初期化される問題

Posted at

はじめに

Flaskを使ってアプリを作成し、Slackのボットでアプリからの通知していました。が、ローカルでデバックモードで試した時も、Herokuでデプロイしてみてもなぜか同じ通知が2回くる…。

スクリーンショット 2020-06-25 4.31.18.png

色々調べてみるとflaskが2回初期化されていることが原因でした。下に解決方法をまとめます。

Development環境での解決方法

解決方法①

Flaskでアプリを作成する際は、debugモードにしておくと変更を加えたときに手動でリロードしなくて良いため、下のようなコードを書いている思います。

if __name__ == '__main__':
    app.run(debug=True)

この部分を

if __name__ == '__main__':
    app.run(use_reloader=False)

と変更するとリロードされません。

解決方法②

2つ目の解決方法としては、2回まわって欲しくない関数の上に

@app.before_first_request

を追加する。

Production環境での解決方法

以下のコードをProcfileに追加してからHerokuにデプロイしたら本番環境でもリロードされませんでした。

web: gunicorn app:app --log-file - --workers 1

参考URL
https://stackoverflow.com/questions/9449101/how-to-stop-flask-from-initialising-twice-in-debug-mode

私はこれを解決するのにものすごく時間がかかってしまったので、誰かの参考になったら嬉しいです😊

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4