代码之家  ›  专栏  ›  技术社区  ›  Bernardo Santana

我应该在rethinkDB中关闭与DB的每个连接吗?

  •  0
  • Bernardo Santana  · 技术社区  · 8 年前

    我有一个用python构建的服务器,使用Tornado和RethinkDB。它已经运行了很长一段时间,为每个用户打开了几个到数据库的连接。我从来没有遇到过任何重大问题,因为我没有把它们打开,也没有把它们关上。但是查看日志文件,我发现有很多这样的警告:

    File "/home/bundleroot/commentserver/app.py", line 30, in <module>
            db_connection = r.connect(RDB_HOST,RDB_PORT) 
          File "/home/bundleroot/commentserver/env34/lib/python3.4/site-packages/rethinkdb/net.py", line 542, in connect
            return conn.reconnect(timeout)
          File "/home/bundleroot/commentserver/env34/lib/python3.4/site-packages/rethinkdb/net.py", line 475, in reconnect
            return self._instance.connect(timeout)
          File "/home/bundleroot/commentserver/env34/lib/python3.4/site-packages/rethinkdb/net.py", line 360, in connect
            self._socket = SocketWrapper(self, timeout)
          File "/home/bundleroot/commentserver/env34/lib/python3.4/site-packages/rethinkdb/net.py", line 268, in __init__
            (self.host, self.port, ex))
        rethinkdb.errors.RqlDriverError: Could not connect to localhost:28015. Error: [Errno 111] Connection refused
        Traceback (most recent call last):
          File "/home/bundleroot/commentserver/env34/lib/python3.4/site-packages/rethinkdb/net.py", line 244, in __init__
            socket.create_connection((self.host, self.port), timeout)
          File "/usr/lib/python3.4/socket.py", line 509, in create_connection
            raise err
          File "/usr/lib/python3.4/socket.py", line 500, in create_connection
            sock.connect(sa)
        ConnectionRefusedError: [Errno 111] Connection refused
    

    我该担心吗?在这种情况下,什么是好的做法?

    1 回复  |  直到 8 年前
        1
  •  1
  •   marcospereira    8 年前

    是的,您需要关闭连接以避免连接泄漏。这个来自RethinkDB的Flask示例:

    https://github.com/rethinkdb/rethinkdb-example-flask-backbone-todo/blob/master/todo.py#L47-L65

    即使RethinkDB没有强制限制连接数(我不确定是否强制),您也可能会遇到操作系统的限制。