在应用程序启动时运行python-rq工作进程
问题描述:
我在Heroku上托管了我的Django应用程序,但由于极少的限制,我从Heroku移到了基于云的服务器。我遵循这个tutorial在Python中运行后台任务。一切运行良好,除了我必须手动运行python worker.py
来启动工作进程。在应用程序启动时运行python-rq工作进程
在Heroku上,我们可以使用Procfile在应用程序启动时运行进程,但现在我在运行ubuntu 14.04的基于云的服务器上运行。那么Procfile的替代方案是什么?
worker.py
import os
import redis
from rq import Worker, Queue, Connection
listen = ['high', 'default', 'low']
redis_url = os.getenv('REDISTOGO_URL', 'redis://localhost:6379')
conn = redis.from_url(redis_url)
if __name__ == '__main__':
with Connection(conn):
worker = Worker(map(Queue, listen))
worker.work()
答
使用像暴发户,systemd或主管的过程管理。
答
我结束了使用暴发户。我创建使用sudo nano \etc\init\rqworker.conf
用下面的代码创建一个新的配置文件rqworker.py
:
description "Job queues for directory"
start on runlevel [2345]
stop on runlevel [!2345]
respawn
setuid myuser
setgid www-data
exec python3.5 worker.py
然后,我刚开始服务sudo service rqworker start
,现在我的工作进程在后台运行。
谢谢!我最终使用暴发户。 – Addicted