0

Heroku で Django アプリをホストしていましたが、いくつかの制限があったため、Heroku からクラウドベースのサーバーに移行しました。Python でのバックグラウンド タスクの実行に関するこのチュートリアルに従いました。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()
4

2 に答える 2

2

結局、upstartを使用しました。次のコード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 に答える