Task/workflow toolkit for Temporal + Redis
Project description
r7kit
R7kit — это лёгкий, модульный фреймворк для управления задачами (tasks) и воркфлоу (workflows) с использованием Temporal и Redis.
Он упрощает реализацию pipeline-процессов и сохранение состояний, с полной поддержкой асинхронных activity и потоковых логов.
🚀 Быстрый старт
Создание задачи и запуск workflow:
from r7kit.workflow_utils import submit_workflow
handle = await submit_workflow(
"my_pipeline.HelloPipeline",
payload={"user": "Ann"},
)
print("Workflow started:", handle.id)
Получение и обновление задачи:
from r7kit.tasks import get_task, patch_task
task = await get_task(task_id)
await patch_task(task_id, {"status": "running"})
📦 Основные возможности
- ✅ Создание, обновление, удаление задач в Redis
- 🔁 Версионирование и TTL ключей
- 🧠 Поддержка
BaseWorkflowиStatefulWorkflowдля управления логикой - 🔌 Простая интеграция с Temporal SDK (Python)
- 📜 Сериализация
payloadсorjson, совместимость и безопасность - ⚙️ Конфигурация через переменные окружения или
configure()
📁 Структура модулей
| Модуль | Назначение |
|---|---|
activities.py |
Temporal Activity (создание, патчинг, удаление задач) |
tasks.py |
API для запуска и получения задач |
workflow_utils.py |
Утилиты для запуска и управления воркфлоу |
base_workflow.py |
Базовый класс с task API |
stateful_workflow.py |
Автоматическое сохранение state |
redis_client.py |
Singleton Redis-клиент с reconnect |
temporal_client.py |
Singleton Temporal-клиент |
serializer.py |
Безопасная сериализация payload-ов |
config.py |
Конфигурация (Redis, Temporal адреса) |
exceptions.py |
Исключения: NotFound, Conflict, AlreadyExists |
🧪 Пример pipeline
from temporalio import workflow
from r7kit.base_task_workflow import BaseTaskWorkflow
@workflow.defn
class HelloPipeline(BaseTaskWorkflow):
@workflow.run
async def run(self, task_id: str):
await self._run_impl(task_id)
async def handle(self) -> None:
await self.patch_task({"status": "started"})
await workflow.sleep(3)
await self.patch_task({"status": "done"})
📝 Лицензия
MIT
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 r7kit-0.1.4.tar.gz.
File metadata
- Download URL: r7kit-0.1.4.tar.gz
- Upload date:
- Size: 15.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ce33aa59c7386338ebe1cbf00f2d96e0aa1aa7f201c34ba07f74f959001efb00
|
|
| MD5 |
92bfcefa0515b2490f19d4b08601e470
|
|
| BLAKE2b-256 |
c7d8236519e1b00456e5943eb2db46a90498d0eaa5c845bff6cb1adbe3e59af8
|
File details
Details for the file r7kit-0.1.4-py3-none-any.whl.
File metadata
- Download URL: r7kit-0.1.4-py3-none-any.whl
- Upload date:
- Size: 20.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b235c4c4efd247cdd5ea20c11c76f6d10c524b0a1891375d8d149e9c22f428fd
|
|
| MD5 |
336763380acd95914c65a5d04f3bcfc1
|
|
| BLAKE2b-256 |
21e82d09a7a1b14eeb1b46a767748fd27a8100907d984a4e1a3af90fdd0353c9
|