#はじめに
Flaskを使ってアプリを作成し、Slackのボットでアプリからの通知していました。が、ローカルでデバックモードで試した時も、Herokuでデプロイしてみてもなぜか同じ通知が2回くる…。
色々調べてみると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
私はこれを解決するのにものすごく時間がかかってしまったので、誰かの参考になったら嬉しいです😊