http://gunicorn.org/deploy.html#runitとしてgunicornの下にFlaskアプリケーションを開始すると仮定して、追加のコマンドライン引数を含める/解析する/アクセスする方法はありますか?gunicornで追加コマンドライン引数を使用
たとえば、Flaskアプリケーションのfoo
オプションを何らかの形で含めることができますか?
gunicorn mypackage:app --foo=bar
おかげで、
http://gunicorn.org/deploy.html#runitとしてgunicornの下にFlaskアプリケーションを開始すると仮定して、追加のコマンドライン引数を含める/解析する/アクセスする方法はありますか?gunicornで追加コマンドライン引数を使用
たとえば、Flaskアプリケーションのfoo
オプションを何らかの形で含めることができますか?
gunicorn mypackage:app --foo=bar
おかげで、
あなたは直接コマンドライン引数を渡すことはできませんが、あなたは簡単に十分なアプリケーション構成を選択することができます。
$ gunicorn 'mypackage:build_app(foo="bar")'
関数 "build_app"をfoo = "bar" kwargを期待通りに呼び出します。この関数は、使用されるWSGI呼び出し可能コードを返します。
私は通常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
で引数を期待する標準コードを使用することができます。
ありがとうございます!複数の引数を渡す方法を検索するときにここに来ました。カンマ区切りの値として渡すだけの単純なものになりました。例えば、 '(foo =" bar "、foo1 =" bar1 ")' –