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