Skip to main content

xq

A distributed queue system built on top of Redis with cron-based scheduling support

XQ is a lightweight distributed task queue that allows you to:

  • Schedule tasks to run at specific times using cron expressions
  • Run tasks immediately or on a recurring schedule
  • Poll tasks based on their scheduled execution time
  • Manage queues and tasks through code or a web interface

Install

pip3 install -r requirements.txt

Use

Producer

import redis
from xq.queue import Queue

# connect to Redis
r = redis.Redis(host='localhost', port=6379)
# create queue
q = Queue(r, "test_queue")

# enqueue a task to run immediately
q.enqueue("this is a one-time message")

# enqueue a task with cron scheduling (runs every 5 minutes)
q.enqueue("this is a recurring message", cron_expression="*/5 * * * *")

# enqueue a task to run at midnight every day
q.enqueue("this runs at midnight", cron_expression="0 0 * * *")

Consumer

import redis
from xq.queue import Queue

# connect to Redis
r = redis.Redis(host='localhost', port=6379)
# create queue
q = Queue(r, "test_queue")

# poll for tasks that are ready to be executed
messages = q.poll()
for message in messages:
    print(f"Processing message: {message.body}")
    # For recurring tasks (with cron expressions), they will be 
    # automatically re-enqueued for their next scheduled run

Use Worker

import redis
from xq.queue import Queue
from xq.worker import Worker

def process_message(message):
    print(f"Worker processing: {message.body}")
    # Your task processing logic here

# connect to Redis
r = redis.Redis(host='localhost', port=6379)
# create queue
q = Queue(r, "test_queue")
# create and run worker
worker = Worker(q, process_message)
# worker will continuously poll for tasks based on their scheduled time
worker.run()

Scheduling with Cron Expressions

XQ supports cron expressions for scheduling recurring tasks:

Cron Expression Description
* * * * * Run every minute
*/5 * * * * Run every 5 minutes
0 * * * * Run at the start of every hour
0 0 * * * Run once a day at midnight
0 0 * * 0 Run once a week on Sunday at midnight
0 0 1 * * Run once a month on the 1st at midnight

The cron format consists of five fields: minute hour day-of-month month day-of-week

Web UI & API Server

XQ includes a web interface and API for managing queues and messages with built-in cron expression interpretation.

Setup

  1. Install the required dependencies:
pip install -r server/requirements.txt
  1. Make sure Redis is running on localhost:6379

  2. Start the server:

python server/api.py
  1. Open your browser and navigate to http://localhost:8000

Features

  • View all available queues
  • Create new queues
  • View messages in a queue with human-readable cron interpretations
  • Add new messages with optional cron scheduling
  • Delete messages from a queue
  • Poll messages from a queue

API Endpoints

  • GET /api/queues - List all available queues
  • GET /api/queues/{queue_name}/messages - List all messages in a queue
  • POST /api/queues/{queue_name}/messages - Add a new message to a queue
  • DELETE /api/queues/{queue_name}/messages/{message_id} - Delete a message from a queue
  • POST /api/queues/{queue_name}/poll - Poll messages from a queue

Metadata

Release files for xqueue 0.2.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for xqueue 0.2.3
File Size Uploaded
xqueue-0.2.3.tar.gz 17.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for xqueue 0.2.3
File Interpreter ABI Platform
xqueue-0.2.3-py3-none-any.whl Python 3 none any Details

Total release size: 35.6 kB

Release files / xqueue-0.2.3.tar.gz

Download URL xqueue-0.2.3.tar.gz
Size 17.8 kB
Tags Source
SHA-256 checksum
How to use checksums
8970819bf7232533c50f21754b7b35bf20d1ecaa3d700028966ba46f4574a235
BLAKE2b-256 checksum
How to use checksums
60a0bd561e7bbbfb9737f6f69780053e6ed6683f10343a7737669b0bfceab810
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.3

Release files / xqueue-0.2.3-py3-none-any.whl

Download URL xqueue-0.2.3-py3-none-any.whl
Size 17.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c6a4ebd302995542dee20ecad1c29e8116122f4ef1f62cf1a38727742eed053b
BLAKE2b-256 checksum
How to use checksums
5106a4a89834be17edcc33337116228f8a9cd6651e4b5f8cc7acf319fc4327d0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.3

Release history Release notifications | RSS feed

This release

0.2.3 This release

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page