Bernardo Santana
Bernardo Santana

Reputation: 454

should I close each connection to the DB in rethinkDB?

I have a server built in python, using Tornado and RethinkDB. Its been running for a long time, opening several connections to the DB per user. I never had any major problems by leaving them open -never closing them-. But checking out the log file I found out there's a lot of this warnings:

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

Should I worry about it? In that case, what are the good practices?

Upvotes: 0

Views: 685

Answers (1)

marcospereira
marcospereira

Reputation: 12214

Yes, you need to close the connection to avoid connection leaks. This Flask example, from RethinkDB, does it:

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

Even if RethinkDB does not enforce a hard limit on number of connections (I'm not sure if it does or not), you can run into the limits of the OS.

Upvotes: 1

Related Questions