【问题标题】:redis not working in my python django appredis 在我的 python django 应用程序中不起作用
【发布时间】:2016-08-01 17:57:29
【问题描述】:

我首先按照 heroku 网站上的教程进行操作。我这样做了

pip install rq

然后在 worker.py 文件中

import os

    import redis
    from rq import Worker, Queue, Connection

    listen = ['high', 'default', 'low']

    redis_url = os.getenv('REDISTOGO_URL', 'redis://localhost:6379')

    conn = redis.from_url(redis_url)

    if __name__ == '__main__':
        with Connection(conn):
            worker = Worker(map(Queue, listen))
            worker.work()

然后

python worker.py

我收到以下错误

        Traceback (most recent call last):
      File "/Users/ray/Desktop/myheroku/practice/lib/python3.5/site-packages/redis/connection.py", line 439, in connect
        sock = self._connect()
      File "/Users/ray/Desktop/myheroku/practice/lib/python3.5/site-packages/redis/connection.py", line 494, in _connect
        raise err
      File "/Users/ray/Desktop/myheroku/practice/lib/python3.5/site-packages/redis/connection.py", line 482, in _connect
        sock.connect(socket_address)
    ConnectionRefusedError: [Errno 61] Connection refused

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
      File "/Users/ray/Desktop/myheroku/practice/lib/python3.5/site-packages/redis/client.py", line 572, in execute_command
        connection.send_command(*args)
      File "/Users/ray/Desktop/myheroku/practice/lib/python3.5/site-packages/redis/connection.py", line 563, in send_command
        self.send_packed_command(self.pack_command(*args))
      File "/Users/ray/Desktop/myheroku/practice/lib/python3.5/site-packages/redis/connection.py", line 538, in send_packed_command
        self.connect()
      File "/Users/ray/Desktop/myheroku/practice/lib/python3.5/site-packages/redis/connection.py", line 442, in connect
        raise ConnectionError(self._error_message(e))
    redis.exceptions.ConnectionError: Error 61 connecting to localhost:6379. Connection refused.

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
      File "/Users/ray/Desktop/myheroku/practice/lib/python3.5/site-packages/redis/connection.py", line 439, in connect
        sock = self._connect()
      File "/Users/ray/Desktop/myheroku/practice/lib/python3.5/site-packages/redis/connection.py", line 494, in _connect
        raise err
      File "/Users/ray/Desktop/myheroku/practice/lib/python3.5/site-packages/redis/connection.py", line 482, in _connect
        sock.connect(socket_address)
    ConnectionRefusedError: [Errno 61] Connection refused

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
      File "worker.py", line 15, in <module>
        worker.work()
      File "/Users/ray/Desktop/myheroku/practice/lib/python3.5/site-packages/rq/worker.py", line 423, in work
        self.register_birth()
      File "/Users/ray/Desktop/myheroku/practice/lib/python3.5/site-packages/rq/worker.py", line 242, in register_birth
        if self.connection.exists(self.key) and \
      File "/Users/ray/Desktop/myheroku/practice/lib/python3.5/site-packages/redis/client.py", line 855, in exists
        return self.execute_command('EXISTS', name)
      File "/Users/ray/Desktop/myheroku/practice/lib/python3.5/site-packages/redis/client.py", line 578, in execute_command
        connection.send_command(*args)
      File "/Users/ray/Desktop/myheroku/practice/lib/python3.5/site-packages/redis/connection.py", line 563, in send_command
        self.send_packed_command(self.pack_command(*args))
      File "/Users/ray/Desktop/myheroku/practice/lib/python3.5/site-packages/redis/connection.py", line 538, in send_packed_command
        self.connect()
      File "/Users/ray/Desktop/myheroku/practice/lib/python3.5/site-packages/redis/connection.py", line 442, in connect
        raise ConnectionError(self._error_message(e))
    redis.exceptions.ConnectionError: Error 61 connecting to localhost:6379. Connection refused.

然后我去谷歌找到了我也遵循的包索引

>>> import redis
>>> r = redis.StrictRedis(host='localhost', port=6379, db=0)
>>> r.set('foo', 'bar')

回车并收到以下消息

        Traceback (most recent call last):
      File "/Users/ray/Desktop/myheroku/practice/lib/python3.5/site-packages/redis/connection.py", line 439, in connect
        sock = self._connect()
      File "/Users/ray/Desktop/myheroku/practice/lib/python3.5/site-packages/redis/connection.py", line 494, in _connect
        raise err
      File "/Users/ray/Desktop/myheroku/practice/lib/python3.5/site-packages/redis/connection.py", line 482, in _connect
        sock.connect(socket_address)
    ConnectionRefusedError: [Errno 61] Connection refused

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
      File "/Users/ray/Desktop/myheroku/practice/lib/python3.5/site-packages/redis/client.py", line 572, in execute_command
        connection.send_command(*args)
      File "/Users/ray/Desktop/myheroku/practice/lib/python3.5/site-packages/redis/connection.py", line 563, in send_command
        self.send_packed_command(self.pack_command(*args))
      File "/Users/ray/Desktop/myheroku/practice/lib/python3.5/site-packages/redis/connection.py", line 538, in send_packed_command
        self.connect()
      File "/Users/ray/Desktop/myheroku/practice/lib/python3.5/site-packages/redis/connection.py", line 442, in connect
        raise ConnectionError(self._error_message(e))
    redis.exceptions.ConnectionError: Error 61 connecting to localhost:6379. Connection refused.

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
      File "/Users/ray/Desktop/myheroku/practice/lib/python3.5/site-packages/redis/connection.py", line 439, in connect
        sock = self._connect()
      File "/Users/ray/Desktop/myheroku/practice/lib/python3.5/site-packages/redis/connection.py", line 494, in _connect
        raise err
      File "/Users/ray/Desktop/myheroku/practice/lib/python3.5/site-packages/redis/connection.py", line 482, in _connect
        sock.connect(socket_address)
    ConnectionRefusedError: [Errno 61] Connection refused

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/Users/ray/Desktop/myheroku/practice/lib/python3.5/site-packages/redis/client.py", line 1072, in set
        return self.execute_command('SET', *pieces)
      File "/Users/ray/Desktop/myheroku/practice/lib/python3.5/site-packages/redis/client.py", line 578, in execute_command
        connection.send_command(*args)
      File "/Users/ray/Desktop/myheroku/practice/lib/python3.5/site-packages/redis/connection.py", line 563, in send_command
        self.send_packed_command(self.pack_command(*args))
      File "/Users/ray/Desktop/myheroku/practice/lib/python3.5/site-packages/redis/connection.py", line 538, in send_packed_command
        self.connect()
      File "/Users/ray/Desktop/myheroku/practice/lib/python3.5/site-packages/redis/connection.py", line 442, in connect
        raise ConnectionError(self._error_message(e))
    redis.exceptions.ConnectionError: Error 61 connecting to localhost:6379. Connection refused.

我所做的与这些教程所要求的差不多。我怎样才能做到这一点?

【问题讨论】:

    标签: python django heroku redis


    【解决方案1】:

    你需要运行 redis 服务器。在您的控制台上输入 redis-server 以启动服务器(Mac OSX)。

    $redis-server
    

    请记住,worker 需要一个代理 (redis) 才能与您的应用程序通信。

    【讨论】:

    • 当我这样做时,我收到此消息 bash: redis-server: command not found。我是在本地还是全局安装它?因为我是在我的 virtualenv 中这样做的。在我正在阅读的文档中没有指定。
    • @losee 你应该全局安装它,redis 不是 python 包或应用程序。启动服务器的命令取决于您的操作系统。
    • brew 安装它,点击 redis-server 并且它工作。第一步。
    猜你喜欢
    • 2017-01-25
    • 2019-07-26
    • 2021-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多