好的,我把所有的东西都安装好了,准备在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
它每秒钟输出一次到终端 我也能跑
./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
我有很多人想要一把不存在的钥匙 所以我的结论是django并没有保存到后端 我的设置有什么问题?我想我漏掉了一些显而易见的东西,我看不出来,因为我已经和这个斗争太久了。帮助
顺便说一下,我不能使用标准端口6379,因为我在共享服务器上。
使用这些更新
celery==2.5.3
django-celery==2.5.5
django-celery-with-redis==2.5
你用的是哪种芹菜?在开发版本中,它们似乎使用了不同的装饰器
在ubuntu 10.10中,当你安装redis时,它会在启动时自动启动,并且它与芹菜发生冲突,因为很明显,即使你告诉它使用这个或那个端口,如果芹菜可以连接到6379端口的redis,它也会将其用作后端。我没看过密码,但这是我的结论。 所以我关闭了所有redis实例,这些实例是我自己用redis.conf在任何端口上运行的,然后我把它们放到我的设置中。
你的
settings.py
里有import djcelery; djcelery.setup_loader()
吗?您可以通过运行以下命令找出它试图连接的位置:
“安装加载器”非常重要,因此必须确保包含它。
(好消息是芹菜将支持Django的2.7版本)。
相关问题 更多 >
编程相关推荐