A service for placing prioritised packages with expiry times on a queue and having a consumer notified of the packages
Project description
A service for placing prioritised packages with expiry times on a queue and having a consumer notified of the packages
How it works
This service monitors a Redis sorted set and calls a consumer function when a new package arrives or the current highest priority package expires. The consumer function can be a regular Python function or an asyncio coroutine.
How to install
pip install kamikaze
The consumer function
The consumer function is the function that is called when a new message comes to the top of the queue. The function should be of the format:
def consumer_function(package, *args): """ Does stuff with packages and optional args passed from the command line """
Long running consumer functions
If the consumer function is long running then it should yield control of the loop when possible. Otherwise the kamikaze service will be slow to react to changes in the queue.
Fast running consumer function
If the consumer function is fast then there will be no need to yield control to the main loop until it is complete.
Running the service
Start the service by running the following:
kamikaze service <consumer-function-path> --consumer-function-args
The consumer function should be the full path to the python coroutine. It must be in your $PYTHONPATH.
Give the --help flag for a full list of options.
Tools
Pushing a Package
Use the push command to add a package to the queue:
kamikaze push <payload> <ttl> <priority>
Removing a Package
Use the remove command to remove a package from the queue:
kamikaze remove <payload>
List Packages on Queue
Use the list command to list all packages on the queue:
kamikaze list
Running the examples
Yielding example
An example of a yielding function can be run like so:
kamikaze service example_consumer.consumer.yielding_consumer_func
Blocking example
An example of a blocking function can be run like so:
kamikaze service example_consumer.consumer.blocking_consumer_func
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 kamikaze-0.1.1.tar.gz
.
File metadata
- Download URL: kamikaze-0.1.1.tar.gz
- Upload date:
- Size: 9.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b8d4be4dfb48fcde14a3fe275bfa6324a7e729c76991cf028ef91943ce3e00a2 |
|
MD5 | d4df725386c17ab431ec8a4b45dc5932 |
|
BLAKE2b-256 | 331c39afb4a7bd73d6d04192a6d6ab892cacec4c09dc2355cd1b6da1700ec910 |
File details
Details for the file kamikaze-0.1.1-py3-none-any.whl
.
File metadata
- Download URL: kamikaze-0.1.1-py3-none-any.whl
- Upload date:
- Size: 8.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f2c7b73a13cab1fd12c7753bb770c6a3fa0d1c6ebd461000811571ef177bdecc |
|
MD5 | 5e6921bcc355f7830e052d205d27e6ae |
|
BLAKE2b-256 | 8c1c91073a49b70f9a50d891572de962a825b54fa7adbee8b103c7ea85229c2d |