with update new mkvirtualenv create python deployment virtualenv supervisord virtualenvwrapper

python - new - virtualenv update



¿Cómo usar virtualenvwrapper en Supervisor? (3)

Primer intento

$ workon myproject $ dirname `which python` /home/username/.virtualenvs/myproject/bin

Agregue lo siguiente

environment=PATH="/home/username/.virtualenvs/myproject/bin"

al supervisord.conf relacionado en la sección [programa: blabla].

Cuando estaba desarrollando y probando mi proyecto, solía usar virtualenvwrapper para administrar el entorno y ejecutarlo:

workon myproject python myproject.py

Por supuesto, una vez que tenía el virtualenv correcto, estaba usando la versión correcta de Python y otras bibliotecas correspondientes para ejecutar mi proyecto.

Ahora, quiero usar Supervisord para administrar el mismo proyecto ya que está listo para la implementación. La pregunta es: ¿cuál es la forma correcta de decirle a Supervisord que active el virtualenv correcto antes de ejecutar el script? ¿Debo escribir un script bash separado que haga esto y llamar a ese script en el campo de comando del archivo de configuración de Supervisord?


Una forma de usar su virtualenv desde la línea de comandos es usar el ejecutable de python ubicado dentro de su virtualenv.

para mí tengo mis envs virtuales en el directorio .virtualenvs . Por ejemplo

/home/ubuntu/.virtualenvs/yourenv/bin/python

no hay necesidad de workon

para un supervisor.conf administrando una aplicación de tornado que hago:

command=/home/ubuntu/.virtualenvs/myapp/bin/python /usr/share/nginx/www/myapp/application.py --port=%(process_num)s


Agregue su ruta virtualenv / bin al environment su supervisord.conf :

[program:myproj-uwsgi] process_name=myproj-uwsgi command=/home/myuser/.virtualenvs/myproj/bin/uwsgi --chdir /home/myuser/projects/myproj -w myproj:app environment=PATH="/home/myuser/.virtualenvs/myproj/bin:%(ENV_PATH)s" user=myuser group=myuser killasgroup=true startsecs=5 stopwaitsecs=10