首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设置Haystack的QueuedSignalProcessor来使用Redis?

如何设置Haystack的QueuedSignalProcessor来使用Redis?
EN

Stack Overflow用户
提问于 2015-07-24 22:03:08
回答 1查看 417关注 0票数 0

我有一个项目,我想从使用queued_search库迁移过来,使用Redis作为队列后端。在此之前,所有的事情都很好,与海斯塔克和Django,我只是有困难,改变信号处理器。

我的理解是,这实际上需要几层代码:

  • Redis ::这是数据存储。
  • RQ ::这是使用Redis实现队列(https://code.google.com/p/queues/)
  • django-rq ::这是用于RQ的Django包装器,在这里我可以指定连接设置
  • queued_search :这是信号处理库。这查找一个通用的QUEUE_BACKEND,它被设置为'rq‘。

1)我在当地安装了Redis。它看起来运行得很顺利:

代码语言:javascript
复制
> brew install redis
> redis-server /usr/local/etc/redis.conf
65024:M 24 Jul 17:08:31.779 * Increased maximum number of open files to 10032 (it was originally set to 256).
65024:M 24 Jul 17:08:31.780 # Server started, Redis version 3.0.2
65024:M 24 Jul 17:08:31.780 * The server is now ready to accept connections on port 6379

2)我安装了RQ、django-rq和queued_search

代码语言:javascript
复制
> pip install rq
> pip install django-rq
> pip install queued_search

3)在我的settings.py文件中,我在已安装的应用程序中添加了queued_search和django_rq,并更改了干草信号处理器设置:

代码语言:javascript
复制
INSTALLED_APPS = (
    'queued_search',
    'django_rq',
    'haystack',
    ....
  )

HAYSTACK_SIGNAL_PROCESSOR = 'queued_search.signals.QueuedSignalProcessor'

4)在我的settings.py文件中,我将QUEUE_BACKEND设置为'rq‘。queued_search应用程序需要定义一个QUEUE_BACKEND:

代码语言:javascript
复制
QUEUE_BACKEND = 'rq'

4)在我的settings.py文件中添加了RQ_QUEUES设置,为queued_search设置了一个名为“haystack_search_queue”的索引:

代码语言:javascript
复制
RQ_QUEUES = {
    'haystack_search_queue': {
        'HOST': 'localhost',
        'PORT': 6379,
        'DB': 0
    }
}

5)我将django_rq添加到urls.py中:

代码语言:javascript
复制
urlpatterns += patterns('',
    (r'^django-rq/', include('django_rq.urls')),
)

但是,当我试图保存一个对象时,我总是在rq/connections.py第70行中得到这个错误:

代码语言:javascript
复制
NoRedisConnectionException at /admin/app/model/pk/
Could not resolve a Redis connection

有这么多的移动部件,我找不到任何关于如何设置这个端到端的文档。我是错过了一步,还是有太多的步骤?有更简单的方法来设置QueuedSignalProcessor吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-25 19:52:08

我能够使用稍微不同的库配置来设置这个库:

  • Redis ::这是数据存储。
  • RQ ::这是使用Redis实现队列(https://code.google.com/p/queues/)
  • django-rq ::这是用于RQ的Django包装器
  • 这是草堆信号处理库,它将干草堆信号传递给django-rq。

切换到干草堆-重新队列,而不是queued_search允许所有组件之间的对话成功!

干草堆-rqueue存储库中有一个示例实现:test

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31620474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档