AWS SQS queue consumer/publisher
Project description
py-sqs-queue
Simple Python AWS SQS queue consumer and publisher
Installation
python setup.py install
Examples
from sqs_queue import Queue
my_queue = Queue('YOUR_QUEUE_NAME')
for message in my_queue:
your_process_fn(message)
Or, if you'd like to leave unprocessable messages in the queue to be retried again later:
for message in my_queue:
try:
your_process_fn(message)
except YourRetryableError:
message.defer()
except Exception as e:
logger.warn(e)
And, you can publish to the queue as well:
queue.publish({'MessageId': 123, 'Message': '{"foo": "bar"}'})
If you already have a boto3 queue resource, pass this instead of a name:
import boto3
from sqs_queue import Queue
queue_resource = boto3.resource('sqs').Queue('YOUR_QUEUE_NAME')
my_queue = Queue(queue=queue_resource)
Configuration
You can put your AWS credentials in environment variables or any of the other places boto3 looks.
Parameters
poll_wait
and poll_sleep
Behind the scenes, the generator is polling SQS for new messages. When the queue is empty, that call will wait up to 20 seconds for new messages, and if it times out before any arrive it will sleep for 40 seconds before trying again. Those time intervals are configurable:
queue = Queue('YOUR_QUEUE_NAME', poll_wait=20, poll_sleep=40)
drain
Normally, once the queue is empty, the generator waits for more messages. If you just want to process all existing messages and quit, you can pass this boolean parameter:
queue = Queue('YOUR_QUEUE_NAME', drain=True)
For example, if your queue is long and your consumers are falling behind, you can start a bunch of consumers with drain=True
and they'll quit when you've caught up.
sns
If your SQS queue is being fed from an SNS topic, you can pass your Queue this boolean parameter, and then your messages will just contain the SNS notification data, so you don't have to fish it out of the SQS message and decode it:
queue = Queue('YOUR_QUEUE_NAME', sns=True)
When you use this option, the sns_message_id
is added to the notification data, which can be used to make sure you only process each message once.
create
When you pass create=True
then, if your SQS queue name is not found, a queue with that name will be created.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file sqs_queue-0.6.6.tar.gz
.
File metadata
- Download URL: sqs_queue-0.6.6.tar.gz
- Upload date:
- Size: 4.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4935a922d332034b97bab535424aad4e6d38607a4526c25f8a8463c65634aa6f |
|
MD5 | da3be57abd7e06736b6fd59bcfd4a8ab |
|
BLAKE2b-256 | 06ee943108224079be0954c913e7ec7b8ed7dda75fd7eadf910444deafb730c6 |
File details
Details for the file sqs_queue-0.6.6-py3-none-any.whl
.
File metadata
- Download URL: sqs_queue-0.6.6-py3-none-any.whl
- Upload date:
- Size: 4.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5c1eb89857b95c57d13a4ebc5f2934e9e3e345b5912ac15e1aa9cb020452a670 |
|
MD5 | 3ed2c109811785000351b3a2af5932c1 |
|
BLAKE2b-256 | 54af121559fdeaa1f19d1953fa2a2625fe1036340c6fa83ea767951df93e82f5 |