Skip to main content

Small framework for Temporal development

Project description

Temporal-boost

social_preview

Python 3.10+ PyPI MIT

Documentation is available on GH pages

Small framework based on temporalio/sdk-python - create Temporal microservices as fast as you can

Requirements

  • Python >= 3.10

Features

  • Create Temporal workers with FastAPI-style
  • Add CRON workers with one code line
  • Append ASGI (ex. FastAPI) workers like Temporal
  • Auto documentation with web UI (like SwaggerUI in FastAPI)
  • Build-in logger and OTLP tracer

Quick start

from temporal_boost import BoostApp
from temporalio import activity
from temporalio import workflow

# Create `BoostApp` object
app = BoostApp()


# Describe your activities/workflows
@activity.defn(name="test_boost_activity_1")
async def test_boost_activity_1(foo: str, bar: str) -> str:
    app.logger.info("This is built-in logger")
    return f"1_{foo}{bar}"


@activity.defn(name="test_boost_activity_2")
async def test_boost_activity_2(foo: str, bar: str) -> str:
    return f"2_{foo}{bar}"


@workflow.defn(name="TestCronWorkflow", sandboxed=False)
class TestCronWorkflow:
    @workflow.run
    async def run(self) -> None:
        app.logger.warning("With is cron workflow")
        return None


# Add async workers to your app (FastAPI style)

app.add_worker(
    "worker_1",
    "task_q_1", 
    activities=[test_boost_activity_1],
    metrics_endpoint="0.0.0.0:9000"
)

app.add_worker(
    "worker_2",
    "task_q_2",
    activities=[test_boost_activity_2]
)

# Example of CRON worker
app.add_worker(
    "test_cron",
    "task_q_3",
    workflows=[TestCronWorkflow],
    cron_schedule="* * * * *",
    cron_runner=TestCronWorkflow.run
)

# Run your app and start workers with CLI
app.run()
python3 main.py 

# Usage: main.py [OPTIONS] COMMAND [ARGS]...

# Options:
#   --install-completion [bash|zsh|fish|powershell|pwsh]
#                                   Install completion for the specified shell.
#   --show-completion [bash|zsh|fish|powershell|pwsh]
#                                   Show completion for the specified shell, to
#                                   copy it or customize the installation.
#   --help                          Show this message and exit.

# Commands:
#   cron
#   run
python3 main.py run

# Usage: main.py run [OPTIONS] COMMAND [ARGS]...

# Options:
#   --help  Show this message and exit.

# Commands:
#   all
#   test_cron
#   worker_1
#   worker_2
python3 main.py run worker_1

# 2023-09-20T21:25:12 | INFO     | Worker worker_1 was registered in CLI
# 2023-09-20T21:25:12 | INFO     | Worker worker_2 was registered in CLI
# 2023-09-20T21:25:12 | INFO     | Worker test_cron was registered in CLI
# 2023-09-20T21:25:12 | INFO     | Worker worker_1 started on task_q_1 queue

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

temporal_boost-1.0.3.tar.gz (15.6 kB view details)

Uploaded Source

Built Distribution

temporal_boost-1.0.3-py3-none-any.whl (21.4 kB view details)

Uploaded Python 3

File details

Details for the file temporal_boost-1.0.3.tar.gz.

File metadata

  • Download URL: temporal_boost-1.0.3.tar.gz
  • Upload date:
  • Size: 15.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.11.0 Linux/6.5.0-1025-azure

File hashes

Hashes for temporal_boost-1.0.3.tar.gz
Algorithm Hash digest
SHA256 1415c1136595803849c4557276faf464ffac62bced145a9a63f9296e02a2c29b
MD5 d2291416af5fae3038a50aaf7782bb1d
BLAKE2b-256 9a447281f839afef75966e2c6a9db5ecf1bf167263728eaf6aef63c527ce0b5f

See more details on using hashes here.

File details

Details for the file temporal_boost-1.0.3-py3-none-any.whl.

File metadata

  • Download URL: temporal_boost-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 21.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.11.0 Linux/6.5.0-1025-azure

File hashes

Hashes for temporal_boost-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 f41fefe65965ed514abf83920fcd87fd12ce61df3bfd4996829c3009456d7407
MD5 3c6a98403867a8c333c75fa3946c9570
BLAKE2b-256 9a5ba67f32f9a72336fbd975b3ba9a6efa51b7af85f5070a4e8d44ad3bee3dd8

See more details on using hashes here.

Supported by

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