0

我在 Heroku 上托管了我的 Django 应用程序,但由于一些限制,我从 Heroku 转移到了基于云的服务器。我按照本教程在 Python 中运行后台任务。一切都运行良好,除了我必须手动运行python worker.py才能启动工作进程。

在 Heroku 上,我们可以在应用程序启动时使用 Procfile 来运行进程,但现在我在运行 ubuntu 14.04 的基于云的服务器上。那么 Procfile 的替代方案是什么?

工人.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()
4

2 回答 2

2

我最终使用了暴发户。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,现在我的工作进程正在后台运行。

于 2016-08-15T08:41:20.620 回答
1

使用像 upstart、systemd 或 supervisor 这样的进程管理器。

于 2016-08-15T08:33:27.790 回答