Simple workflows.
Project description
Hymir
Hymir is a python library for creating and running simple workflows by composing together Chains (which run sequentially) and Groups (which run in parallel) of jobs.
Hymir is built on top of redis for intermediate storage and tracking workflow state, and comes with an Executor for running the workflows using Celery.
Installation
pip install hymir
Usage
Using the @job decorator is the simplest way to define a job. The decorated
function should return a Success, Failure, Retry, or CheckLater object.
The only limitations are:
- The decorated function must be importable from other files
(
from mymodule import myjobshould work) - The outputs and inputs of a job must be JSON-safe.
When jobs depend on the output of other jobs, you can specify the inputs of the
job using the inputs parameter of the @job decorator and the output of the
job using the output parameter.
from hymir.job import Success
from hymir.config import Config, set_configuration
from hymir.executors.celery import CeleryExecutor
from hymir.workflow import (
Workflow,
job,
Group,
Chain,
)
@set_configuration
def set_config(config: Config):
config.redis_url = "redis://localhost:6379/0"
@job(output="words")
def uppercase_word(word: str):
return Success(word.upper())
@job(inputs=["words"], output="count")
def count_uppercase_words(words: list[str]):
count = sum(1 for word in words if word.isupper())
return Success(count)
workflow = Workflow(
Chain(
Group(
uppercase_word("hello"),
uppercase_word("world"),
),
count_uppercase_words()
)
)
# This assumes you've already setup & configured a celery app before you
# get here.
executor = CeleryExecutor()
workflow_id = executor.run(workflow)
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
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 hymir-0.1.5.tar.gz.
File metadata
- Download URL: hymir-0.1.5.tar.gz
- Upload date:
- Size: 12.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.11.8 Linux/6.5.0-1016-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2c5ec5ab7f061410f70ed5791a5b6bd3b171120fb63012e09c1d1d757d0cbae3
|
|
| MD5 |
b9651315c24e5ffac1979dae80002eae
|
|
| BLAKE2b-256 |
95833d6ca4e9ed6e27c5fefbab59374a4f74cd1ee7c54369cc3120a12579c440
|
File details
Details for the file hymir-0.1.5-py3-none-any.whl.
File metadata
- Download URL: hymir-0.1.5-py3-none-any.whl
- Upload date:
- Size: 14.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.11.8 Linux/6.5.0-1016-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a237189f735917d981756d3b500149d5aded7699ea7ae3adbbb2d0a9288455cc
|
|
| MD5 |
134cd52631b77248dc95ba68f1f14e0b
|
|
| BLAKE2b-256 |
93f101670882ad9b160cbba3bd67069919a11a7e7724de780b5280fb3b7ce235
|