Django 如何设置Haystack';s QueuedSignalProcessor是否要使用Redis?

Django 如何设置Haystack';s QueuedSignalProcessor是否要使用Redis?,django,redis,django-haystack,django-rq,Django,Redis,Django Haystack,Django Rq,我有一个项目,我想从Haystack的queued_搜索库迁移过来,使用Redis作为队列后端。在此之前,Haystack和Django的一切都很好,我只是在更换信号处理器时遇到了麻烦 我的理解是,这实际上需要几层代码: Redis::这是数据存储 RQ::这是使用Redis实现队列() django rq::这是rq的django包装,我可以在其中指定连接设置 排队搜索::这是Haystack信号处理库。这将查找设置为“rq”的通用队列_后端 1) 我已经在本地安装了Redis。它似乎运行

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

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

  • Redis::这是数据存储
  • RQ::这是使用Redis实现队列()
  • django rq::这是rq的django包装,我可以在其中指定连接设置
  • 排队搜索::这是Haystack信号处理库。这将查找设置为“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) 在my settings.py文件中,我已将queued_search和django_rq添加到已安装的应用程序中,并更改了haystack信号处理器设置:

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

HAYSTACK_SIGNAL_PROCESSOR = 'queued_search.signals.QueuedSignalProcessor'
4) 在我的settings.py文件中,我已将队列_后端设置为“rq”。排队搜索应用程序需要定义队列后端:

QUEUE_BACKEND = 'rq'
4) 在我的settings.py文件中,我添加了RQ_队列设置,并为排队搜索设置了一个名为“haystack_search_queue”的索引:

RQ_QUEUES = {
    'haystack_search_queue': {
        'HOST': 'localhost',
        'PORT': 6379,
        'DB': 0
    }
}
5) 我已将django_rq添加到URL.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?

我可以使用稍微不同的库配置来设置它:

  • Redis::这是数据存储
  • RQ::这是的一个实现 使用Redis的队列()
  • django rq::这是rq的django包装
  • haystack rqueue::这是haystack信号处理库,它将haystack信号传递给django rq
切换到haystack rqueue而不是queued_search可以让所有组件成功地相互对话


haystack rqueue repository中有一个示例实现:

这对我非常有用,我正在使用弹性搜索,我不知道弹性搜索的QUEUE\u后端应该是什么,我尝试了QUEUE\u后端='elasticsearch',但它的意思是无效的后端,请告诉我如何使用弹性搜索设置它。