Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在应用程序启动时运行python rq工作进程_Python_Django_Heroku_Python Rq - Fatal编程技术网

在应用程序启动时运行python rq工作进程

在应用程序启动时运行python rq工作进程,python,django,heroku,python-rq,Python,Django,Heroku,Python Rq,我在Heroku上托管了我的Django应用程序,但由于一些限制,我从Heroku转移到了基于云的服务器。我在Python中运行后台任务时遵循了这一点。除了我必须手动运行pythonworker.py来启动worker进程之外,一切都正常运行 在Heroku上,我们可以在应用程序启动时使用Procfile来运行进程,但现在我在一台运行ubuntu 14.04的基于云的服务器上。那么,Procfile的替代方案是什么呢 worker.py import os import redis from

我在Heroku上托管了我的Django应用程序,但由于一些限制,我从Heroku转移到了基于云的服务器。我在Python中运行后台任务时遵循了这一点。除了我必须手动运行
pythonworker.py
来启动worker进程之外,一切都正常运行

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

使用upstart、systemd或supervisor等流程管理器。

使用upstart、systemd或supervisor等流程管理器。

我最终使用了upstart。我使用带有以下代码的
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服务rqworker start
,现在我的工作进程正在后台运行。

我最终使用了upstart。我使用带有以下代码的
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服务rqworker start
,现在我的工作进程正在后台运行。

谢谢!我最终还是用了upstart。谢谢!我最终使用了upstart。