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.1.tar.gz (11.9 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.1-py3-none-any.whl (15.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: r7kit-0.1.1.tar.gz
  • Upload date:
  • Size: 11.9 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.1.tar.gz
Algorithm Hash digest
SHA256 7093886412bb14dd34a64c411d368b81d50fb18a8bb97d1069cbf19625a88ec4
MD5 fa923f8bd8d23c32048730ff1e4c569c
BLAKE2b-256 7ed4e6f422cbcffde726e620914e148f32c71d0a70f7b5ecceba633d10156825

See more details on using hashes here.

File details

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

File metadata

  • Download URL: r7kit-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 15.4 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 ae05376057b376c7c1f68ae7179dcf6cfdf95fef8898500017d9502fd2ba4341
MD5 d0ca079ecdddb56d0a06bd11365d57d1
BLAKE2b-256 cec46968dd90a00b096a2783ed5a8c0b6b519f4e06da8da39b6080d7aaff9e88

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