Pasa los parámetros de la línea de comandos al script uwsgi

Estoy tratando de pasar argumentos a una aplicación wsgi de ejemplo,

config_file = sys.argv[1] def application(env, start_response): start_response('200 OK', [('Content-Type','text/html')]) return [b"Hello World %s" % config_file] 

Y correr:

 uwsgi --http :9090 --wsgi-file test_uwsgi.py -???? config_file # argument for wsgi script 

¿Alguna manera inteligente de lograrlo? No se pudo encontrar en los documentos uwsgi. Tal vez hay otra forma de proporcionar algunos parámetros a la aplicación wsgi? (las variables env están fuera de scope)

Python Args:

–pyargv “foo bar”

 sys.argv ['uwsgi', 'foo', 'bar'] 

Opciones de uwsgi:

–set foo = bar

 uwsgi.opt['foo'] 'bar' 

Terminé usando una variable env pero configurándola dentro de un script de inicio:

 def start(uwsgi_conf, app_conf, logto): env = dict(os.environ) env[TG_CONFIG_ENV_NAME] = app_conf command = ('-c', uwsgi_conf, '--logto', logto, ) os.execve(os.path.join(distutils.sysconfig.get_config_var('prefix'),'bin', 'uwsgi'), command, env) 

Podría usar un archivo .ini con la configuración pyargv que @roberto mencionó. Llamemos a nuestro archivo de configuración uwsgi.ini y utilicemos el contenido:

 [uwsgi] wsgi-file=/path/to/test_uwsgi.py pyargv=human 

Entonces vamos a crear una aplicación WGSI para probarlo:

 import sys def application(env, start_response): start_response('200 OK', [('Content-Type','text/html')]) return [str.encode("Hello " + str(sys.argv[1]), 'utf-8')] 

Puede ver cómo cargar este archivo https://uwsgi-docs.readthedocs.io/en/latest/Configuration.html#loading-configuration-files :

  uwsgi --ini /path/to/uwsgi.ini --http :8080 

Luego, cuando hacemos un curl la aplicación, podemos ver que nuestro parámetro se repite:

 $ curl http://localhost:8080 Hello human 

Si está intentando pasar argumentos de estilo argparse a su aplicación WSGI, también funcionan bien en el .ini :

 pyargv=-y /config.yml