2016-04-01 14 views
5

私はGunicorn経由で提供しようとしているFlaskアプリケーションを持っています。GunicornはFlaskアプリケーションをロードできませんでした

私はvirtualenvとpython3を使用しています。私は私のアプリのベースディレクトリに私のvenv CDを有効にした場合、次に実行します。

gunicorn mysite:app 

は私が取得:

Starting gunicorn 
Listening at http://127.0.0.1:8000 
DEBUG:mysite.settings:>>Config() 
... 
Failed to find application: 'mysite' 
Worker exiting 
Shutting down: master 
Reason: App failed to load 

をしてみるの/ etc/nginxの/サイト利用可能な私が唯一のファイル「デフォルト」を持っています。サイト対応ではファイルがありません。私は、次のしているmanage.py

mysite #this is where I cd to and run gunicorn mysite:app 
--manage.py 
--/mysite 
----settings.py 
----__init__.py 

個人用サイトのため:

__init__.pyファイルで

logger.debug("manage.py entry point") 
app = create_app(app_name) 
manager = Manager(app) 

if __name__ == "__main__": 
    manager.run() 

include /etc/nginx/conf.d/*.conf; 
include /etc/nginx/sites-enabled/*; 

アプリケーション構造:私は私のnginx.confファイルで

settings.py virtualenvの内側から

class Config(object): 
    logger.debug(">>Config()") #this logs OK so gunicorn is at least starting in correct directory 

appディレクトリ内で
def create_app(object_name): 
    app = Flask(__name__) 
    #more setup here 
    return app 

私は

print(sys.path) 

を実行する場合、私はこのvirtualenvのためのpythonとサイトパッケージへのパスを見つけます。

私はそれをインストールしてgunicornの個人用サイトを実行しているだけの問題だgunicorn開始するために読んだものから:アプリ

は、個人用サイトの親ディレクトリからgunicornを実行している私は、同じアプリケーションを見つけることができなかった得る:「個人用サイト」を、アプリケーションはエラーを読み込めませんでしたが、DEBUG ... Config()がログに記録されていません(間違ったディレクトリに入っているため)。 mysite/mysite(明らかに間違っている)からgunicornを実行すると、ワーカープロセスのereorで例外が発生します。ImportError: 'mysite'という名前のモジュールはありません。

どのように私はgunicornを実行することができますかについての手がかり?

答えて

6

あなたはfrom mysite import appに相当する、mysite:appでgunicorn指しています。ただし、mysiteの最上部(__init__.py)のインポートにはappオブジェクトがありません。工場に電話するようにガンコーンに伝えます。

gunicorn "mysite:create_app()" 

コールに引数を渡すこともできます。

from mysite import create_app 
app = create_app('production') 

はまた、あなたがセットアップを行う独立したファイルを使用することができます。

gunicorn "mysite:create_app('production')" 

内部的には、これは同等です。あなたのケースでは、すでにappmanage.pyに初期化しています。

gunicorn manage:app 
関連する問題