8

app.pyPython と Flask を使用してアプリを実行しています。Heroku にデプロイしようとしていて、Procfile と requirements.txt の作成を含め、このチュートリアルの手順に従いました。ただし、を実行するたびにheroku local、次のエラーが発生します。

web.1  | [2015-09-26 17:36:32 -0400] [19422] [INFO] Starting gunicorn 19.3.0
web.1  | [2015-09-26 17:36:32 -0400] [19422] [INFO] Listening at: http://0.0.0.0:5000 (19422)
web.1  | [2015-09-26 17:36:32 -0400] [19422] [INFO] Using worker: sync
web.1  | [2015-09-26 17:36:32 -0400] [19425] [INFO] Booting worker with pid: 19425
web.1  | usage: gunicorn [-h] [--auth_host_name AUTH_HOST_NAME]
web.1  | gunicorn: error: unrecognized arguments: app:app
web.1  | [2015-09-26 17:36:32 -0400] [19425] [INFO] Worker exiting (pid: 19425)

以前にアプリを Heroku に正常にデプロイしたことがありますが、このエラーが発生したことはありません。私のProcfileはただの1行です: web: gunicorn app:app.

誰でもこれを修正する方法を教えてもらえますか?

更新:私のコードの一部を変更し、実行するheroku localと正常に動作します:

web.1  | [2015-09-28 18:52:13 -0400] [70650] [INFO] Starting gunicorn 19.3.0
web.1  | [2015-09-28 18:52:13 -0400] [70650] [INFO] Listening at: http://0.0.0.0:5000 (70650)
web.1  | [2015-09-28 18:52:13 -0400] [70650] [INFO] Using worker: sync
web.1  | [2015-09-28 18:52:13 -0400] [70653] [INFO] Booting worker with pid: 70653

しかし、Heroku アプリをデプロイすると、アプリケーション エラーが発生し、ログを確認すると、以前と同じエラーが表示されます。

2015-09-28T22:50:54.775077+00:00 app[web.1]: 2015-09-28 22:50:54 [3] [INFO] Starting gunicorn 18.0
2015-09-28T22:50:54.776176+00:00 app[web.1]: 2015-09-28 22:50:54 [3] [INFO] Using worker: sync
2015-09-28T22:50:54.776052+00:00 app[web.1]: 2015-09-28 22:50:54 [3] [INFO] Listening at: http://0.0.0.0:24995 (3)
2015-09-28T22:50:54.786067+00:00 app[web.1]: 2015-09-28 22:50:54 [9] [INFO] Booting worker with pid: 9
2015-09-28T22:50:56.004336+00:00 heroku[web.1]: State changed from starting to up
2015-09-28T22:51:42.659042+00:00 heroku[router]: at=error code=H13 desc="Connection closed without response" method=GET path="/" host=bobawithjames.herokuapp.com request_id=1afab4c0-484e-456b-be05-3086ee0711cd fwd="160.39.250.29" dyno=web.1 connect=1ms service=39ms status=503 bytes=0
2015-09-28T22:51:42.604331+00:00 app[web.1]:                 [--noauth_local_webserver]
2015-09-28T22:51:42.604323+00:00 app[web.1]: usage: gunicorn [-h] [--auth_host_name AUTH_HOST_NAME]
2015-09-28T22:51:42.604335+00:00 app[web.1]:                 [--auth_host_port [AUTH_HOST_PORT [AUTH_HOST_PORT ...]]]
2015-09-28T22:51:42.633611+00:00 app[web.1]: gunicorn: error: unrecognized arguments: hello:app

今何が起こっているか知っている人はいますか?

4

4 に答える 4

5

問題は、flask/gunicorn によって実行されているスクリプトに argparse が含まれていることにありました。これらを次の中に入れます:

if __name__ == "__main__":
    import argparse
    ...

このようにして、直接実行された場合でも、スタンドアロンで実行されている引数を解析できます。

于 2019-11-26T17:07:30.170 に答える
4

@euxneks が提案した提案と、Google OAuth 2.0 をいじることで、なんとか問題を解決できました。

基本的に、私が使用していたチュートリアル、Python Quickstart for Google Calendar APIargparseは、資格情報のフラグを取得するために使用していました。ただし、tools.run非推奨の も呼び出していました。そのため、代わりに、Python Web アプリで OAuth 2.0 を使用する手順を説明する別のより最新のチュートリアルに従うことにしました。

于 2015-10-10T00:18:11.913 に答える