2012-11-27 32 views
8

セロリのシンプルなサンプルをプロダクションサーバーにデプロイしようとしています。セロリのウェブサイトでデーモンhttp://docs.celeryproject.org/en/latest/tutorials/daemonizing.html#daemonizing 、およびI は、/ etc/default/celeryddjango /セロリ - セロリ状態:エラー:時間制約内でノードが応答しませんでした

 
    1 # Name of nodes to start 
    2 # here we have a single node 
    3 CELERYD_NODES="w1" 
    4 # or we could have three nodes: 
    5 #CELERYD_NODES="w1 w2 w3" 
    6 
    7 # Where to chdir at start. 
    8 CELERYD_CHDIR="/home/audiwime/cidec_sw" 
    9 
10 # Python interpreter from environment. 
11 ENV_PYTHON="/usr/bin/python26" 
12 
13 # How to call "manage.py celeryd_multi" 
14 CELERYD_MULTI="$ENV_PYTHON $CELERYD_CHDIR/manage.py celeryd_multi" 
15 
16 # # How to call "manage.py celeryctl" 
17 CELERYCTL="$ENV_PYTHON $CELERYD_CHDIR/manage.py celeryctl" 
18 
19 # Extra arguments to celeryd 
20 CELERYD_OPTS="--time-limit=300 --concurrency=8" 
21 
22 # Name of the celery config module. 
23 CELERY_CONFIG_MODULE="celeryconfig" 
24 
25 # %n will be replaced with the nodename. 
26 CELERYD_LOG_FILE="/var/log/celery/%n.log" 
27 CELERYD_PID_FILE="/var/run/celery/%n.pid" 
28 
29 # Workers should run as an unprivileged user. 
30 CELERYD_USER="audiwime" 
31 CELERYD_GROUP="audiwime" 
32 
33 export DJANGO_SETTINGS_MODULE="cidec_sw.settings" 

に設定ファイルを得たが、私は、端末に

celery status

を実行した場合、私はこの回答を得ました:

Error: No nodes replied within time constraint

私は

python26 manage.py celeryd -l info

を実行することができますとDjangoの私のタスクが正常に動作https://github.com/celery/celery/tree/3.0/extra/generic-init.d/

 
/etc/init.d/celeryd restart 
celeryd-multi v3.0.12 (Chiastic Slide) 
> w1.one.cloudwime.com: DOWN 
> Restarting node w1.one.cloudwime.com: OK 

で提供celerydスクリプト経由でセロリを再起動することができますが、私はデーモンがその仕事をさせた場合私はどんな結果も得ていません。エラーはありません。/var/log/celery/w1.log

私は知っています私はこの

from celery import current_app 
def call_celery_delay(request): 
    print current_app.tasks 
    run.delay(request.GET['age']) 
    return HttpResponse(content="celery task set",content_type="text/html") 

をしなかったので、私のタスクが登録されていると私はウィッヒで私のタスクを辞書を取得し、私のタスクからの結果、中にエラーなし、

{'celery.chain': <@task: celery.chain>, 'celery.chunks': <@task: celery.chunks>, 'celery.chord': <@task: celery.chord>, 'tasks.add2': <@task: tasks.add2>, 'celery.chord_unlock': <@task: celery.chord_unlock>, **'tareas.tasks.run': <@task: tareas.tasks.run>**, 'tareas.tasks.add': <@task: tareas.tasks.add>, 'tareas.tasks.test_two_minute': <@task: tareas.tasks.test_two_minute>, 'celery.backend_cleanup': <@task: celery.backend_cleanup>, 'celery.map': <@task: celery.map>, 'celery.group': <@task: celery.group>, 'tareas.tasks.test_one_minute': <@task: tareas.tasks.test_one_minute>, 'celery.starmap': <@task: celery.starmap>} 

表示されませんが、それ以外にも、私は他に何も得ますログ、何も。 誰かが間違っていることを教えてもらえますか?あなたは私の唯一の希望...

答えて

-1

私はそれが非常に簡単な解決策だったが、それはまた奇妙なものだった、私の問題を解決している : 私は何をした

$ /etc/init.d/celerybeat restart 
$ /etc/init.d/celeryd restart 
$ service celeryd restart 

私がしなければなりませんでしたこの順番に、私は醜いエラーを得るだろう他の方法:ノードは時間の制約内で答えた。

+0

私はあなたが 'celerybeat'と' celeryd'の両方を必要としないと思います。 'celeryd -B'を実行することができます。これは同じです。私はまだあなたが 'service celeryd'をどうやって得たのか、かなり興味があります:)(P.S.私はまだこのエラーが表示されます) – Houman

+1

@kaveこのエラーは主にすべてのファイルのアクセス許可が正しくない場合に発生します。 –

+0

@AkashDeshpandeご回答ありがとうございます。あなたはとても優しく、このペーストを見てください。http://pastebin.com/e3GK4eaxこれは私がパーミッションをセットアップした方法です。 – Houman

1

問題を見つけるために、次のコマンドを使用します。

C_FAKEFORK=1 sh -x /etc/init.d/celeryd start 

セロリのドキュメントで述べたような問題は、あなたのソースプロジェクト(アクセス許可の問題、構文エラーなど)

であるので、これは通常起こります: -

If the worker starts with “OK” but exits almost immediately afterwards and there is nothing in the log file, then there is probably an error but as the daemons standard outputs are already closed you’ll not be able to see them anywhere. For this situation you can use the C_FAKEFORK environment variable to skip the daemonization step

グッドラック

出典:Celery Docs

0

セロリのデーモンが起動していない可能性があるためです。これが一つの理由です。だから親切にそれを再起動するpython manage.py celeryd --loglevel = INFO

関連する問題