如何设置Haystack的QueuedSignalProcessor以使用Redis?

时间:2015-07-24 22:03:09

标签: django redis django-haystack django-rq

我有一个项目,我想使用Redis作为队列后端,使用Haystack的queued_search库进行迁移。在此之前,Haystack和Django的一切都很好用,我只是在更换信号处理器时遇到了麻烦。

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

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

1)我在本地安装了Redis。它似乎在游泳:

> 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

> pip install rq
> pip install django-rq
> pip install queued_search

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

INSTALLED_APPS = (
    'queued_search',
    'django_rq',
    'haystack',
    ....
  )

HAYSTACK_SIGNAL_PROCESSOR = 'queued_search.signals.QueuedSignalProcessor'

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

QUEUE_BACKEND = 'rq'

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

RQ_QUEUES = {
    'haystack_search_queue': {
        'HOST': 'localhost',
        'PORT': 6379,
        'DB': 0
    }
}

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

urlpatterns += patterns('',
    (r'^django-rq/', include('django_rq.urls')),
)

但是当我尝试保存一个对象时,我在rq / connections.py第70行中不断收到此错误:

NoRedisConnectionException at /admin/app/model/pk/
Could not resolve a Redis connection

有很多活动部件,我找不到任何关于如何设置端到端的文档。我错过了一步或者步数太多了吗?有没有更简单的方法来设置QueuedSignalProcessor?

1 个答案:

答案 0 :(得分:1)

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

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

切换到haystack-rqueue而不是queued_search允许所有组件成功地相互通信!

在haystack-rqueue存储库中有一个示例实现:https://github.com/mandx/haystack-rqueue/tree/master/haystack_rq_test