Skip to content

rcarmo/aioazstorage

Repository files navigation

aioazstorage

A thin asyncio wrapper for Azure Storage

Why

I wanted a low-latency asyncio library for accessing Azure Storage via persistent connections (essentially tables and queues) and the existing Python SDK (which is auto-generated from API specs) was both too high-level and not async-ready.

In comparison with its somewhat slow pace, this can now (as published) upload roughly 2.5K "hello world" blobs/s and enumerate roughly 3K/s across the Atlantic, which is pretty decent.

This is an intentionally low-level wrapper, and meant largely for my own consumption. However, pull requests are welcome.

Style Notes

Since this targets Python 3.6+ (Ubuntu still only ships with 3.6.9 in 2020), I'm making liberal use of type annotations (which are still not uniform) and f-strings.

Features/Roadmap

  • SAS Token support
  • advanced message semantics (including queueing status codes)
  • message peek/clear/update
  • blob enumeration/creation/tier management
  • blob retrieval/deletion
  • blob container enumeration/creation/deletion
  • queue metadata
  • queue enumeration
  • message queueing/retrieval/deletion
  • queue creation/deletion
  • table batch operations (batch update implemented, result parsing not yet)
  • table entry creation/updating/deletion/querying (with EDM annotation of supported types)
  • table creation/deletion/querying

Requirements

  • Python 3.6
  • aiohttp
  • ujson (optional)
  • uvloop (optional)

About

A thin asyncio wrapper for Azure Storage

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published