Skip to main content

Python asynchronous and lightweight SQS client.

Project description

aiosqs

pypi PyPI - Downloads

About package

Python asynchronous and lightweight SQS client. The goal of this library is to provide fast and optimal access to SQS for Python projects, e.g. when you need a high-load queue consumer or high-load queue producer written in Python.

Supports Python versions 3.8, 3.9, 3.10, 3.11, 3.12.

Supported and tested Amazon-like SQS providers: Amazon, VK Cloud.

Why aiosqs?

Main problem of botocore and aiobotocore is huge memory and CPU consumption. Also aiobotocore itself is a transition of botocore to async interface without any optimizations.

Related issues:

Installation

pip install aiosqs

Usage

Create a client:

from aiosqs import SQSClient

client = SQSClient(
    aws_access_key_id="access_key_id",
    aws_secret_access_key="secret_access_key",
    region_name="us-west-2",
    host="sqs.us-west-2.amazonaws.com",
)

Receive the queue url by queue name:

response = await client.get_queue_url(queue_name=queue_name)
queue_url = response["QueueUrl"]

Send a message to the queue:

response = await client.send_message(
    queue_url=queue_url,
    message_body=json.dumps({"demo": 1, "key": "value"}),
    delay_seconds=0,
)
print(response)

Receive a message from the queue:

response = await client.receive_message(
    queue_url=queue_url,
    max_number_of_messages=1,
    visibility_timeout=30,
)
if response:
    print(response)
    receipt_handle = response[0]["ReceiptHandle"]

Delete the message from the queue:

await client.delete_message(
    queue_url=queue_url,
    receipt_handle=receipt_handle,
)

Close the client at the end:

await client.close()

Another option is to use SQSClient as an async context manager. No need to call close manually in this case. Example:

from aiosqs import SQSClient

async with SQSClient(
    aws_access_key_id="access_key_id",
    aws_secret_access_key="secret_access_key",
    region_name="us-west-2",
    host="sqs.us-west-2.amazonaws.com",
) as client:
    response = await client.get_queue_url(queue_name="dev_orders")
    queue_url = response["QueueUrl"]
    print(queue_url)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aiosqs-1.0.6.tar.gz (57.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aiosqs-1.0.6-py3-none-any.whl (20.2 kB view details)

Uploaded Python 3

File details

Details for the file aiosqs-1.0.6.tar.gz.

File metadata

  • Download URL: aiosqs-1.0.6.tar.gz
  • Upload date:
  • Size: 57.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.28.1

File hashes

Hashes for aiosqs-1.0.6.tar.gz
Algorithm Hash digest
SHA256 53cd3bb08ad03d610bc93c182e0ac50b982decaa9028bf9a131c479901e39c1d
MD5 5659dedbd9b590faa3bee7cf9b3765a2
BLAKE2b-256 b9d2e330e7008a85869aa5ca082076dcf32db9827e2a943855d714ede7d65ea2

See more details on using hashes here.

File details

Details for the file aiosqs-1.0.6-py3-none-any.whl.

File metadata

  • Download URL: aiosqs-1.0.6-py3-none-any.whl
  • Upload date:
  • Size: 20.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.28.1

File hashes

Hashes for aiosqs-1.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 95cc950b14d083b492ad35733626aeff39058a1838173cef81eaa927d723da60
MD5 17e79096dcd54846a69be63a68d92068
BLAKE2b-256 44bee1c3d8c30245e6b357bc3c17e2535cbec07792c4c978d975c466df851547

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page