15

私はこのようなセロリ労働者を実行しています:

celery worker --app=portalmq --logfile=/tmp/portalmq.log --loglevel=INFO -E --pidfile=/tmp/portalmq.pid

次に、このワーカーをバックグラウンドで実行します。私は次のようないくつかのことを試しました:

nohup celery worker --app=portalmq --logfile=/tmp/portal_mq.log --loglevel=INFO -E --pidfile=/tmp/portal_mq.pid >> /tmp/portal_mq.log 2>&1 </dev/null &

しかし、それは機能していません。セロリのドキュメントを確認しましたが、次のことがわかりました。

特にこのコメントは関連しています:

In production you will want to run the worker in the background as a daemon.
To do this you need to use the tools provided by your platform, or something
like supervisord (see Running the worker as a daemon for more information).

これは、バックグラウンドでプロセスを実行するにはオーバーヘッドが大きすぎます。サーバーにsupervisordをインストールし、それに慣れておく必要があります。現時点では行きません。バックグラウンドでセロリワーカーを実行する簡単な方法はありますか?

4

4 に答える 4

31

スーパーバイザーは非常にシンプルで、セットアップに必要な作業はほとんどありません。スーパーバイザーと組み合わせたセロリにも同じことが当てはまります。

セットアップに10分以上かかることはありません:)

  1. apt-get でスーパーバイザーをインストールする

  2. /etc/supervisor/conf.d/celery.conf 設定ファイルを作成します

  3. somethis を celery.conf ファイルに貼り付けます

    [program:celery]
    directory = /my_project/
    command = /usr/bin/python manage.py celery worker
    
  4. プラス(必要な場合)いくつかのオプションで便利なもの(ダミー値付き)

    user = celery_user
    group = celery_group
    stdout_logfile = /var/log/celeryd.log
    stderr_logfile = /var/log/celeryd.err
    autostart = true
    environment=PATH="/some/path/",FOO="bar"
    
  5. スーパーバイザーを再起動します (または、supervisorctl reread を実行します。supervisorctl add celery)

その後、celery プロセスを管理するための素敵な ctl コマンドを取得します。

supervisorctl start/restart/stop celery

supervisorctl tail [-f] celery [stderr]
于 2012-10-10T10:48:06.957 に答える