3

仮想環境の変数を使用して、daemonizedを実行するようにセロリを設定しています。しかし、私が走る$ sudo /etc/init.d/celeryd startと、私はUnknown command: 'celeryd_multi' Type 'manage.py help' for usage.

私は以下を設定しました:

CELERYD_CHDIR = "/ home / myuser / projects / myproject" ENV_PYTHON = "/ home / myuser / .virtualenvs / myproject / bin / python" CELERYD_MULTI = "$ ENV_PYTHON $ CELERYD_CHDIR / manage.py celeryd_multi"

$ /home/myuser/.virtualenvs/myproject/bin/python /home/myuser/projects/myproject/manage.py celeryd_multiコマンドラインから実行すると、正常に動作します。

何か案は?私はあなたが必要とする他のコードを喜んで投稿します:)

ありがとうございました!

4

2 に答える 2

9

たぶんあなたは間違ったDJANGO_SETTINGS_MODULEを設定しただけです:

試してください:DJANGO_SETTINGS_MODULE = "settings" <-> DJANGO_SETTINGS_MODULE = "project.settings"

于 2012-09-24T18:21:25.210 に答える
3

ここでの問題は、ユーザーとして実行すると、virtualenvでユーザー「myuser」に対して適切な環境がすでにアクティブ化されており、/ home / myuser / .virtualenvs /myproject/からパッケージをプルすることです。

sudo /etc/init.d/celeryd startを実行すると、ルートとしてceleryを開始します。このようなものが存在する場合でも、おそらく/root/.virtualenvs/でvirtualenvがアクティブ化されていないため、/usrでpythonパッケージが検索されます。 / lib / ...デフォルトのPythonがあり、その結果、セロリがインストールされていない場所。

オプションは次のいずれかです。

  1. rootユーザーで同じvirtualenvを複製し、sudoで試したように起動します
  2. virtualenvをそのままにして、initスクリプトを使用せずにユーザー「myuser」(sudoなし)としてceleryを開始します。
  3. su - myuser -c /bin/sh /home/myuser/.virtualenvs/myproject/bin/celerydmyuserとしてinit.dから呼び出すスクリプトを記述します。
  4. virtualenvの外部にスーパーバイザーをインストールし、それがあなたのために汚い仕事をするようにします

考え:

  1. 必要のないものにはrootを使用しないでください。
  2. 起動時にセロリを起動する必要がない場合は、これで問題ありません。スクリプトでラップされている可能性があります。
  3. 私には単純なハックですが、他のものを使用するためにさらに30分を投資したくない場合は機能します。
  4. Pythonのスタートアップのニーズをすべて処理するためのおそらく最良の方法であり、強くお勧めします。
于 2012-07-12T00:41:05.577 に答える