我真的很喜欢使用新贵。 我目前有暴发户的工作,在一些虚拟世界中运行不同的gunicorn实例。 但是,我在互联网上find的芹菜新贵脚本的2-3个例子并不适合我。
所以,有了以下变数,我将如何写一个Upstart工作来在虚拟环境中运行django-celery。
Django项目的path:
/srv/projects/django_project
这个项目的艺术之路:
/srv/environments/django_project
芹菜设置的path是Django项目设置文件(django-celery):
/srv/projects/django_project/settings.py
这个Celery实例的日志文件的path:
/srv/logs/celery.log
对于这个虚拟环境,用户:
iamtheuser
和组:
www-data
我想用celerybeat来运行Celery Daemon,所以,我想传递给django-admin.py(或manage.py)的命令是:
python manage.py celeryd -B
如果脚本在gunicorn工作开始之后开始,那么会更好,并在gunicorn工作停止时停止。 我们说这个文件是:
/etc/init/gunicorn.conf
您可能需要添加更多的配置,但是这是我写的一个启动django-celery作为virtualenv中的特定用户的脚本:
start on started mysql stop on stopping mysql exec su -s /bin/sh -c 'exec "$0" "$@"' user -- /home/user/project/venv/bin/python /home/user/project/django_project/manage.py celeryd respawn
这对我很有效。
我知道这看起来很丑,但是这个超级用户的答案似乎是当前“非正式”的技术,以非特权用户的身份运行新兴工作。
我认为我将不得不做更多的工作在virtualenv里面,但是在virtualenv里面调用python二进制文件是它所需要的。