Python client library for adding messages to PyQueue with local and remote support
Project description
PyQueue Client
A Python library for adding messages to PyQueue with support for both local JSON files and remote PyQueue servers.
Installation
pip install pyqueue-client
Usage
Local Queue (JSON File)
from pyqueue_client import PyQueue
# Initialize local queue
notifier = PyQueue(queue_type="local", queue_file="queue.json")
# Add message with auto-generated ID
notifier.add_message({
"message_field_1": "Message Field Value 1",
"message_field_2": "Message Field Value 2",
})
# Add message with custom ID
notifier.add_message({
"message_field_1": "Another Message",
"message_field_2": "Another Value",
}, item_id="custom-message-id-123")
# Retrieve all messages
messages = notifier.get_messages()
print(messages)
# Update a message
notifier.update_message("custom-message-id-123", {
"message_field_1": "Updated Message",
"status": "processed"
})
# Remove a message
notifier.remove_message("custom-message-id-123")
# Clear all messages
notifier.clear_queue()
Remote Queue (PyQueue Server)
from pyqueue_client import PyQueue
# Initialize remote queue client (without authentication)
notifier = PyQueue(
queue_type="remote",
server_url="http://localhost:8000",
queue_name="my-queue",
timeout=30
)
# Initialize remote queue client with API key authentication
notifier = PyQueue(
queue_type="remote",
server_url="https://api.pyqueue.com",
queue_name="my-queue",
api_key="your-api-key-here",
timeout=30
)
# Add message to remote queue
notifier.add_message({
"user_id": 12345,
"action": "send_email",
"email": "user@example.com",
"template": "welcome"
})
# Receive messages (SQS-style with visibility timeout)
messages = notifier.receive_messages(max_messages=10, visibility_timeout=30)
for message in messages:
# Process message
print(f"Processing message: {message['Id']}")
# Delete message after processing (using receipt handle)
notifier.delete_message(message['ReceiptHandle'])
# Get queue information
queue_info = notifier.get_queue_info()
print(f"Queue has {queue_info['message_count']} messages")
# Health check
if notifier.health_check():
print("Remote server is healthy")
Consumer Pattern
import time
from pyqueue_client import PyQueue
# Consumer for processing messages (with API key)
consumer = PyQueue(
queue_type="remote",
server_url="https://api.pyqueue.com",
queue_name="task-queue",
api_key="your-api-key-here"
)
def process_message(message):
"""Process a single message"""
print(f"Processing: {message['message_body']}")
# Your processing logic here
time.sleep(1) # Simulate work
return True
# Main consumer loop
while True:
try:
# Receive messages with visibility timeout
messages = consumer.receive_messages(max_messages=5, visibility_timeout=60)
for message in messages:
try:
# Process the message
if process_message(message):
# Delete message after successful processing
consumer.delete_message(message['ReceiptHandle'])
print(f"✅ Message {message['Id']} processed successfully")
else:
print(f"❌ Failed to process message {message['Id']}")
except Exception as e:
print(f"Error processing message {message['Id']}: {e}")
if not messages:
# No messages available, wait before polling again
time.sleep(5)
except KeyboardInterrupt:
print("Consumer stopped")
break
except Exception as e:
print(f"Consumer error: {e}")
time.sleep(10) # Wait before retrying
✨ Features
🔄 Queue Management
- Local & Remote Queues - Support for both JSON file storage and remote PyQueue servers
- Add Messages - Easily add structured messages to queues
- Retrieve Messages - Get messages from queues for processing
- SQS-like API - Familiar receive/delete pattern with visibility timeouts
- Message Updates - Update existing messages in the queue
- Queue Operations - Clear, remove, and manage queue contents
🌐 Remote Server Support
- HTTP API - RESTful API for remote queue operations
- Connection Management - Automatic session handling and error recovery
- Health Checks - Monitor server availability
- Configurable Timeouts - Control request timeouts for reliability
- Multiple Queues - Support for named queues on the same server
🛠️ Developer Experience
- Simple API - Intuitive interface for quick integration
- Unified Interface - Same API for both local and remote queues
- JSON Format - Standard JSON structure for easy data handling
- Flexible Schema - Support for custom message fields and structures
- Lightweight - Minimal dependencies for fast installation and usage
- Type Hints - Full type annotation support for better IDE experience
📊 Data Structure
- Unique IDs - Each message gets a unique identifier for tracking
- Timestamps - Automatic timestamp generation for message ordering
- Receipt Handles - SQS-style receipt handles for message processing
- Custom Fields - Add any custom data fields to your message body
- Type Safety - Structured data format ensures consistency
API Reference
Initialization
# Local queue
PyQueue(queue_type="local", queue_file="queue.json")
# Remote queue (without authentication)
PyQueue(
queue_type="remote",
server_url="http://localhost:8000",
queue_name="default",
timeout=30
)
# Remote queue (with API key authentication)
PyQueue(
queue_type="remote",
server_url="https://api.pyqueue.com",
queue_name="default",
api_key="your-api-key-here",
timeout=30
)
Methods
add_message(message, item_id=None)- Add a message to the queueget_messages()- Get all messages from the queuereceive_messages(max_messages=10, visibility_timeout=30)- Receive messages (SQS-style)delete_message(receipt_handle)- Delete a message using receipt handleremove_message(item_id)- Remove a message by IDupdate_message(item_id, new_message)- Update an existing messageclear_queue()- Remove all messages from the queueget_queue_info()- Get queue statistics and informationhealth_check()- Check if the queue is accessible
Requirements
- Python >= 3.6
- requests >= 2.25.0
- urllib3 >= 1.26.0
License
MIT License
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
pyqueue_client-1.1.2.tar.gz
(8.5 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pyqueue_client-1.1.2.tar.gz.
File metadata
- Download URL: pyqueue_client-1.1.2.tar.gz
- Upload date:
- Size: 8.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fca91889c5ba94cb770c375e59b4ba7238ab62dc39a6d8bfc82dcd20997a2ccb
|
|
| MD5 |
b684abc33c9dc5cb8e47c9c57e5c42d9
|
|
| BLAKE2b-256 |
ad8e4c313d70468b04c9dfdfc1b120fc6bf75b31cad4786c288937097be25931
|
File details
Details for the file pyqueue_client-1.1.2-py3-none-any.whl.
File metadata
- Download URL: pyqueue_client-1.1.2-py3-none-any.whl
- Upload date:
- Size: 8.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7558b210f5c13e3c61e8049a3f78b9e5fc305574a5c4ec7cde43717e2705794c
|
|
| MD5 |
8a6b6e06bb95615a73a2eb2c30e19876
|
|
| BLAKE2b-256 |
f6a0b4e3314735e74d7c624c0f5f3139890285706809555f2390f21da5d1ac43
|