Navigate:
Temporal
~$TEMPO1.0%

Temporal: Durable execution platform for workflows

Distributed system for durable workflow execution with automatic failure handling, retries, and state persistence.

LIVE RANKINGS • 09:50 AM • STEADY
TOP 100TOP 100TOP 100TOP 100TOP 100TOP 100TOP 100TOP 100TOP 100TOP 100TOP 100TOP 100
OVERALL
#60
32
CLOUD & DEVOPS
#3
2
30 DAY RANKING TREND
ovr#60
·Cloud#3
STARS
18.5K
FORKS
1.4K
7D STARS
+178
7D FORKS
+21
See Repo:
Share:

Learn more about Temporal

Temporal is a durable execution platform that runs application logic called Workflows in a fault-tolerant manner. The system automatically handles intermittent failures, retries failed operations, and maintains workflow state across process restarts and infrastructure failures. Temporal originated as a fork of Uber's Cadence and is implemented in Go with support for multiple programming languages through SDKs. It is commonly used for microservice orchestration, distributed cron jobs, and complex business process automation.

Temporal

1

Durable Execution

Workflows survive process crashes, network failures, and infrastructure outages by persisting execution state. The platform automatically resumes workflows from their last checkpoint without data loss.

2

Automatic Retry Logic

Built-in retry mechanisms handle transient failures without manual intervention. The system distinguishes between retryable and non-retryable errors to optimize execution flow.

3

Multi-Language Support

Provides SDKs for multiple programming languages while maintaining workflow portability. Developers can implement workflows and activities in their preferred language ecosystem.


import asyncio
from temporalio import activity, workflow
from temporalio.client import Client
from temporalio.worker import Worker

@activity.defn
async def say_hello(name: str) -> str:
    return f"Hello, {name}!"

@workflow.defn
class GreetingWorkflow:
    @workflow.run
    async def run(self, name: str) -> str:
        return await workflow.execute_activity(
            say_hello,
            name,
            schedule_to_close_timeout=timedelta(minutes=5),
        )

async def main():
    client = await Client.connect("localhost:7233")
    
    async with Worker(
        client,
        task_queue="greeting-task-queue",
        workflows=[GreetingWorkflow],
        activities=[say_hello],
    ):
        result = await client.execute_workflow(
            GreetingWorkflow.run,
            "World",
            id="greeting-workflow-001",
            task_queue="greeting-task-queue",
        )
        print(f"Workflow result: {result}")

if __name__ == "__main__":
    asyncio.run(main())


See how people are using Temporal

Loading tweets...


[ EXPLORE MORE ]

Related Repositories

Discover similar tools and frameworks used by developers