afansv / async-rethinkdb-pool

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

AsyncIO RethinkDB connection pool

async-repool is a Python library which provides a asyncio-based connection pool management for accessing a RethinkDB database. async-repool creates and maintains a configurable pool of active connection to a RethinkDB database. These connections are then available individually through a basic API.

Internally, repool uses the Python AsyncIO Queue class which is not thread-safe. This means that the same connection pool cannot be share between several threads, please, use asyncio with process workers instead.

This is just asyncio-based clone of repool.

Installation

async-repool is available as a python library on Pypi. Installation is very simple using pip :

$ pip install async_repool

This will install async-repool as well as rethinkdb dependency.

Basic usage

A new connection pool using default connection configurations can simply be created by:

from async_repool import AsyncConnectionPool

pool = AsyncConnectionPool(dict())  # Required argument is kwargs for R.connect function
await pool.init_pool()
conn = await pool.acquire()         #returns a Connection instance
await r.table('heroes').run(conn)   #do RethinkDB stuff
# ...
pool.release(conn)          #put back connection to the pool
await pool.release_pool()         #release pool (close rethinkdb connections)

# ...
async with pool.connect() as conn1:
    # do something with conn1
# pool.release(conn1) is automatically called after leaving the with code block

Optional arguments

AsyncConnectionPool creation accepts a number of optional arguments:

  • pool_size: set the pool size, ie. the number of connections opened simultaneously (default=3).
  • connection_ttl: set the connection time to live. Connections older than TTL are automatically closed and re-opened when acquire (default=3600 seconds, set to 0 for disable)

About

License:MIT License


Languages

Language:Python 98.9%Language:Makefile 1.1%