All Projects → HENNGE → aiodynamo

HENNGE / aiodynamo

Licence: other
Asynchronous, fast, pythonic DynamoDB Client

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to aiodynamo

esa-httpclient
An asynchronous event-driven HTTP client based on netty.
Stars: ✭ 82 (+60.78%)
Mutual labels:  asynchronous
less
Go serverless website on AWS Lambda.
Stars: ✭ 22 (-56.86%)
Mutual labels:  dynamodb
spellbook
Functional library for Javascript
Stars: ✭ 14 (-72.55%)
Mutual labels:  asynchronous
rocket2
🚀 The official UBC Launch Pad Slack bot and team management platform
Stars: ✭ 17 (-66.67%)
Mutual labels:  dynamodb
AsyncIterator
An asynchronous iterator library for advanced object pipelines in JavaScript
Stars: ✭ 43 (-15.69%)
Mutual labels:  asynchronous
dialectic
Transport-polymorphic, asynchronous session types for Rust
Stars: ✭ 60 (+17.65%)
Mutual labels:  asynchronous
movies-dynamodb-lambda
Simple Serverless API in Node.JS with AWS Lambda, DynamoDB & API Gateway
Stars: ✭ 27 (-47.06%)
Mutual labels:  dynamodb
tsukuyomi
Asynchronous Web framework for Rust
Stars: ✭ 81 (+58.82%)
Mutual labels:  asynchronous
fetch-action-creator
Fetches using standardized, four-part asynchronous actions for redux-thunk.
Stars: ✭ 28 (-45.1%)
Mutual labels:  asynchronous
logtoes
Demo of Asynchronous pattern (worker) using Python Flask & Celery
Stars: ✭ 49 (-3.92%)
Mutual labels:  asynchronous
venusscript
A dynamic, interpreted, scripting language written in Java.
Stars: ✭ 17 (-66.67%)
Mutual labels:  asynchronous
asynckivy
async library for Kivy
Stars: ✭ 56 (+9.8%)
Mutual labels:  asynchronous
FastAPI-template
Feature rich robust FastAPI template.
Stars: ✭ 660 (+1194.12%)
Mutual labels:  asynchronous
cashews
Cache with async power
Stars: ✭ 204 (+300%)
Mutual labels:  asynchronous
pyfadeaway
python RPC module
Stars: ✭ 30 (-41.18%)
Mutual labels:  asynchronous
AsyncSuffix
Asynchronous methods naming checker for ReSharper
Stars: ✭ 19 (-62.75%)
Mutual labels:  asynchronous
ssdp-client
The most lightweight asynchronous Java SSDP (Simple Service Discovery Protocol) Client
Stars: ✭ 46 (-9.8%)
Mutual labels:  asynchronous
elfo
Your next actor system
Stars: ✭ 38 (-25.49%)
Mutual labels:  asynchronous
akka-persistence-dynamodb
DynamoDBJournal for Akka Persistence
Stars: ✭ 85 (+66.67%)
Mutual labels:  dynamodb
serde dynamodb
Talk with dynamodb using your existing structs thanks to serde
Stars: ✭ 28 (-45.1%)
Mutual labels:  dynamodb

AsyncIO DynamoDB

CircleCI Code style: black Documentation Status

Asynchronous pythonic DynamoDB client; 2x faster than aiobotocore/boto3/botocore.

Quick start

With httpx

Install this library

pip install "aiodynamo[httpx]" or, for poetry users poetry add aiodynamo -E httpx

Connect to DynamoDB

from aiodynamo.client import Client
from aiodynamo.credentials import Credentials
from aiodynamo.http.httpx import HTTPX
from httpx import AsyncClient

    async with AsyncClient() as h:
        client = Client(HTTPX(h), Credentials.auto(), "us-east-1")

With aiohttp

Install this library

pip install "aiodynamo[aiohttp]" or, for poetry users poetry add aiodynamo -E aiohttp

Connect to DynamoDB

from aiodynamo.client import Client
from aiodynamo.credentials import Credentials
from aiodynamo.http.aiohttp import AIOHTTP
from aiohttp import ClientSession

    async with ClientSession() as session:
        client = Client(AIOHTTP(session), Credentials.auto(), "us-east-1")

API use

        table = client.table("my-table")

        # Create table if it doesn't exist
        if not await table.exists():
            await table.create(
                Throughput(read=10, write=10),
                KeySchema(hash_key=KeySpec("key", KeyType.string)),
            )

        # Create or override an item
        await table.put_item({"key": "my-item", "value": 1})
        # Get an item
        item = await table.get_item({"key": "my-item"})
        print(item)
        # Update an item, if it exists.
        await table.update_item(
            {"key": "my-item"}, F("value").add(1), condition=F("key").exists()
        )

Why aiodynamo

  • boto3 and botocore are synchronous. aiodynamo is built for asynchronous apps.
  • aiodynamo is fast. Two times faster than aiobotocore, botocore or boto3 for operations such as query or scan.
  • aiobotocore is very low level. aiodynamo provides a pythonic API, using modern Python features. For example, paginated APIs are automatically depaginated using asynchronous iterators.
  • Legible source code. botocore and derived libraries generate their interface at runtime, so it cannot be inspected and isn't typed. aiodynamo is hand written code you can read, inspect and understand.
  • Pluggable HTTP client. If you're already using an asynchronous HTTP client in your project, you can use it with aiodynamo and don't need to add extra dependencies or run into dependency resolution issues.

Complete documentation is here

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].