2011-12-13 42 views

答えて

20

あなたは直接コマンドライン引数を渡すことはできませんが、あなたは簡単に十分なアプリケーション構成を選択することができます。

$ gunicorn 'mypackage:build_app(foo="bar")' 

関数 "build_app"をfoo = "bar" kwargを期待通りに呼び出します。この関数は、使用されるWSGI呼び出し可能コードを返します。

+0

ありがとうございます!複数の引数を渡す方法を検索するときにここに来ました。カンマ区切りの値として渡すだけの単純なものになりました。例えば、 '(foo =" bar "、foo1 =" bar1 ")' –

2

私は通常main()__init.py__に入れた後、私は(あなたのmain()があまりにも他の機能をサポートしていると仮定)で実行するか、gunicornなしにすることができます。

# __init__.py 

# Normal entry point 
def main(): 
    ... 

# Gunicorn entry point generator 
def app(*args, **kwargs): 
    # Gunicorn CLI args are useless. 
    # https://stackoverflow.com/questions/8495367/ 
    # 
    # Start the application in modified environment. 
    # https://stackoverflow.com/questions/18668947/ 
    # 
    import sys 
    sys.argv = ['--gunicorn'] 
    for k in kwargs: 
     sys.argv.append("--" + k) 
     sys.argv.append(kwargs[k]) 
    return main() 

このようにすれば、たとえば次のように簡単に実行できます。

gunicorn 'app(foo=bar)' ... 

とあなたのmain()sys.argvで引数を期待する標準コードを使用することができます。

関連する問題