簡體   English   中英

芹菜與Redis后端

[英]celery with redis backend

好的,我已經正確安裝了所有東西,以便在Django中獲得celery + 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

它每秒輸出到終端一次,所以我也可以運行

./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

你有import djcelery; djcelery.setup_loader() import djcelery; djcelery.setup_loader()在您的settings.py

您可以通過運行以下命令找出它試圖連接的位置:

 $ python manage.py celeryctl shell

 >>> celery.broker_connection().as_uri()

“ setup_loader”非常重要,因此必須確保將其包括在內。

(好消息是celery將在2.7版中開箱即用地支持Django)。

在ubuntu 10.10中,當您安裝redis時,它會在啟動時自動啟動,並且與celery沖突,因為即使celery可以在6379端口中連接到redis,即使您告訴它使用該端口或該端口,它也會將其用作后端。 我沒有看到代碼,但是是我的結論。 因此,我關閉了所有redis實例,並使用redis.conf在我想要的任何端口上運行了自己的實例,然后將其放在設置中。

BROKER_URL = 'redis://localhost:8889/0'
REDIS_DB = 0
REDIS_CONNECT_RETRY = True
CELERY_RESULT_BACKEND = 'redis'
CELERY_REDIS_PORT = 8889
BROKER_PORT = 8889
CELERY_RESULT_PORT = 8889
CELERY_TASK_RESULT_EXPIRES = 10
CELERYBEAT_SCHEDULER= 'djcelery.schedulers.DatabaseScheduler'

您正在使用什么版本的芹菜? 在開發版本中,看起來他們使用了不同的Decorator。

from celery.task import task

@celery.task()
def add(x, y):
    return x + y

您要在端口8889上啟動Redis服務器嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM