zoukankan      html  css  js  c++  java
  • Redis in python, how do you close the connection?

    down voteaccepted

    Just use redis.Redis. It uses a connection pool under the hood, so you don't have to worry about managing at that level.

    If you absolutely have to use a low level connection, you need to do the response handling that is normally done for you by redis.Redis.

    Here's an example of executing a single command using the low level connection:

    def execute_low_level(command, *args, **kwargs):
        connection = redis.Connection(**kwargs)
        try:
            connection.connect()
            connection.send_command(command, *args)
    
            response = connection.read_response()
            if command in redis.Redis.RESPONSE_CALLBACKS:
                return redis.Redis.RESPONSE_CALLBACKS[command](response)
            return response
    
        finally:
            del connection

    Example usage:

    response = execute_low_level(
            'HGET', 'redis:key', 'hash:key', host='localhost', port=6379)

    But as I said before, redis.Redis is the way to go in 99.9% of cases.

    you dont need worry about it when you use ConnectionPool.look at the source code:

    def execute_command(self, *args, **options):
        "Execute a command and return a parsed response"
        pool = self.connection_pool
        command_name = args[0]
        connection = pool.get_connection(command_name, **options)
        try: 
            connection.send_command(*args)
            return self.parse_response(connection, command_name, **options)
        except (ConnectionError, TimeoutError) as e:
            connection.disconnect()
            if not connection.retry_on_timeout and isinstance(e, TimeoutError):
                raise
            connection.send_command(*args)
            return self.parse_response(connection, command_name, **options)
        finally:
            pool.release(connection)

    finally,every connection will release to the pool no matter what you do, and it will assign to other client.

  • 相关阅读:
    挂断电话——黑名单拦截
    上传文件 服务端模拟存储
    短信监听+短信拦截
    c#常用控件缩写(装)
    20121016学习笔记四
    c#日期时间格式化
    FTP服务器配置以及访问
    关于远程桌面设置和连接
    20121016学习笔记三
    电脑开机应用程序自动启动设置
  • 原文地址:https://www.cnblogs.com/ExMan/p/9807322.html
Copyright © 2011-2022 走看看