7

コンテキスト: 私は中型のフラスコアプリケーション(10〜15ビュー)を作成しています。その過程で、コードを簡単に保守および拡張できるように整理したいと考えています(ほとんどのFlaskアプリケーションのようにモノリシックファイルではありません)。 )。

アプリケーションの構造は、次のようにドキュメントを模倣しています。

/AwesomeHackings
    /ENV
    /AwesomeHackings
        /models
        /static
        /templates
        /__init__.py
        /awesome.py
        /awesome.cfg
    /Procfile
    /README.MD
    /requirements.txt
    /run.py

問題: 「app」という名前ではないフラスコアプリケーションでフォアマンを動作させることができません。run.pyをアプリケーションへのエントリポイントにしたいと思います。

私はgunicorn+geventを使用していますが、現在のProcfileには次のものが含まれています。

web: gunicorn -w 2 -b 0.0.0.0:$PORT -k gevent app:run

私はrun.pyアプリケーションをテストするために使用しています:

from AwesomeHackings import awesome
awesome.app.run(debug=True)

したがって、Procfileで単純に置き換えることができると思いrunましappたが、実行するforeman startと、gunicornはモジュールに関する無意味な言い回しで失敗します。

4

1 に答える 1

10

私はDjangoのドキュメントで解決策を見つけました。gunicornの主なパラメータはモジュールです:

gunicorn [OPTIONS] APP_MODULE

APP_MODULEパターンはどこにありますかMODULE_NAME:VARIABLE_NAME

構文がキーワード引数app:someIdentifierであるのは論理的であるように見えましたが、すべてのチュートリアルでという名前のモジュールを使用してappいるため、実際にはそうではありません。私の状況に対する正しい議論はでしたrun:app

于 2012-05-20T17:53:21.840 に答える