Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

r7kit-0.1.3.tar.gz (12.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

r7kit-0.1.3-py3-none-any.whl (15.6 kB view details)

Uploaded Python 3

File details

Details for the file r7kit-0.1.3.tar.gz.

File metadata

  • Download URL: r7kit-0.1.3.tar.gz
  • Upload date:
  • Size: 12.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for r7kit-0.1.3.tar.gz
Algorithm Hash digest
SHA256 57836307e91a82b5432f86f81b2171df3b078b8b24c1df626b2077477b324239
MD5 cc8870b4ca358f413accf67fd6c03e30
BLAKE2b-256 52768980dd1654840b3001e2c276012633bb2215e9e951287c199624d9038ca8

See more details on using hashes here.

File details

Details for the file r7kit-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: r7kit-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 15.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for r7kit-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 63a6c66ab9f7d43e66d235ccb8504e546091fd322d1ff1e7c82598c0e99cfef2
MD5 cf072d3ef025e8ef4b654b6079823a75
BLAKE2b-256 2dd98bb3e0a62ffb2e9d00ca2d992cbe71e22abd97a4f66e05983c1f0011056e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page