在应用程序启动时运行python-rq worker进程

时间:2016-08-14 23:19:24

标签: python django heroku python-rq

我在Heroku上托管了我的Django应用程序,但由于几乎没有限制,我从Heroku迁移到基于云的服务器。关于在Python中运行后台任务,我遵循了这个tutorial。除了必须手动运行python worker.py以启动工作进程外,一切运行正常。

在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()

2 个答案:

答案 0 :(得分:1)

我最终使用了暴发户。我使用rqworker.py创建了一个新的配置文件sudo nano \etc\init\rqworker.conf,其代码如下:

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,现在我的工作进程在后台运行。

答案 1 :(得分:0)

使用像upstart,systemd或supervisor这样的流程管理器。