я должен закрывать каждое соединение с БД в rethinkDB?

У меня есть сервер, построенный на 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

Стоит ли мне об этом беспокоиться? В таком случае, каковы передовые методы?


person Bernardo Santana    schedule 15.01.2016    source источник


Ответы (1)


Да, вам нужно закрыть соединение, чтобы избежать утечки соединения. Этот пример Flask из RethinkDB делает это:

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

Даже если RethinkDB не устанавливает жестких ограничений на количество подключений (я не уверен, что это так или нет), вы можете столкнуться с ограничениями ОС.

person marcospereira    schedule 15.01.2016