OK、djangoでセロリ+ redisを取得するためにすべてを適切にインストールしました
私は得た
INSTALLED_APPS = (
'djcelery',
'kombu.transport.django',
)
これらは私の設定にあります
CELERY_REDIS_HOST = 'localhost'
CELERY_REDIS_PORT = 8889
CELERY_REDIS_DB = 0
CELERY_RESULT_BACKEND = 'redis'
BROKER_URL = "redis://localhost:8889/0"
REDIS_CONNECT_RETRY = True
CELERY_IGNORE_RESULT = True
CELERY_SEND_EVENTS = True
CELERY_TASK_RESULT_EXPIRES = 60
CELERYBEAT_SCHEDULER= 'djcelery.schedulers.DatabaseScheduler'
私はredisで作業しました
./redis-server
1秒ごとに端末に出力するので、実行することもできます
./manage.py celeryd -E -B --loglevel=INFO -n w1.d820
エラーなしで、タスクが追加され、正常に終了したことさえ確認できます
./manage celeryev
したがって、celeryev によってログに記録されたとしても、このコードは機能しません。
from celery.task import task
@task
def add(x, y):
return x + y
res = add.apply_async(args=[1,5])
print res.wait()
結果を返さずにハングするだけです。実際にredisから取得しようとしていることがわかります。
./redis-cli
MONITOR
存在しないキーを取得しようとして多くの GET を取得するので、私の結論は、django がバックエンドに保存されていないということです。明らかな何かが欠けていると思いますが、これと戦っている時間が長すぎるため、それを見ることができません。ヘルプ
ところで、私は共有サーバー上にいるため、標準ポート 6379 を使用できません。
これらを使用して更新
celery==2.5.3
django-celery==2.5.5
django-celery-with-redis==2.5