Temporal: Durable execution platform for workflows
Distributed system for durable workflow execution with automatic failure handling, retries, and state persistence.
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.
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.
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.
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
Related Repositories
Discover similar tools and frameworks used by developers
Renovate
Automated dependency updates via pull requests across 90+ package managers.
node_exporter
Collects Unix system metrics for Prometheus monitoring.
Grafana
Query and visualize metrics from multiple data sources.
Dockge
Self-hosted Docker Compose manager with real-time terminal streaming.
OpenZFS
Enterprise filesystem with volume management, data integrity, snapshots, and compression.