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.4.tar.gz (15.3 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.4-py3-none-any.whl (20.1 kB view details)

Uploaded Python 3

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

Hashes for r7kit-0.1.4.tar.gz
Algorithm Hash digest
SHA256 ce33aa59c7386338ebe1cbf00f2d96e0aa1aa7f201c34ba07f74f959001efb00
MD5 92bfcefa0515b2490f19d4b08601e470
BLAKE2b-256 c7d8236519e1b00456e5943eb2db46a90498d0eaa5c845bff6cb1adbe3e59af8

See more details on using hashes here.

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

Hashes for r7kit-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 b235c4c4efd247cdd5ea20c11c76f6d10c524b0a1891375d8d149e9c22f428fd
MD5 336763380acd95914c65a5d04f3bcfc1
BLAKE2b-256 21e82d09a7a1b14eeb1b46a767748fd27a8100907d984a4e1a3af90fdd0353c9

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