igorcoding / asynctnt-queue

Tarantool Queue bindings for python/asyncio

Home Page:https://igorcoding.github.io/asynctnt-queue

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

asynctnt-queue

Build Status Coverage Status PyPI

asynctnt-queue is a python/asyncio bindings library for tarantool-queue package in Tarantool Database, integrated with asynctnt module.

Documentation

Documentation is available here.

Installation

Use pip to install:

$ pip install asynctnt-queue

Basic Usage

Tarantool config:

box.cfg {
    listen = '127.0.0.1:3301'
}

box.once('v1', function()
    box.schema.user.grant('guest', 'read,write,execute', 'universe')
end)

queue = require('queue')
queue.create_tube('test_tube', 'fifottl')

Python code:

import asyncio
import asynctnt
import asynctnt_queue


async def run():
    conn = asynctnt.Connection(host='127.0.0.1', port=3301)
    await conn.connect()
    
    queue = asynctnt_queue.Queue(conn)
    test_tube = queue.tube('test_tube')
    
    # Add a task to queue
    task = await test_tube.put({
        'key': 'value'
    })
    
    print('Task id: {}'.format(task.task_id))
    print('Task status: {}'.format(task.status))
    
    # Retrieve a task from queue
    task = await test_tube.take(1)
    
    # ... do some work with task
    
    await task.ack()
    await conn.disconnect()

loop = asyncio.get_event_loop()
loop.run_until_complete(run())

References

  1. Tarantool - in-memory database and application server.
  2. asynctnt - fast Tarantool database connector for Python/asyncio
  3. aiotarantool - alternative Python/asyncio connector

About

Tarantool Queue bindings for python/asyncio

https://igorcoding.github.io/asynctnt-queue

License:Apache License 2.0


Languages

Language:Python 77.6%Language:Shell 16.2%Language:Makefile 3.2%Language:Lua 3.0%