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

Uploaded Python 3

File details

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

File metadata

  • Download URL: r7kit-0.1.7.tar.gz
  • Upload date:
  • Size: 15.8 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.7.tar.gz
Algorithm Hash digest
SHA256 c972c550765e76750ecd2fbf9128de443419fc1a5b9f80e9071b1cc57f918e24
MD5 ad0656f71d2587ed07bc53008e862946
BLAKE2b-256 e77647b839390ffaaafcbed7faa499ec4797fd7af4e507c1ca1cfbe6d3c55d5b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: r7kit-0.1.7-py3-none-any.whl
  • Upload date:
  • Size: 20.9 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.7-py3-none-any.whl
Algorithm Hash digest
SHA256 a8c6f1e5de25000ef0f7bb390f234fb9a82f6966aead28d9e230d82dc0b6705c
MD5 de92ea97f465ea14983b66989ed14c55
BLAKE2b-256 220e8e32ed7e7e58118999c829cb1a8add86ed823d250a6aaa46e3f598ab42bb

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