A series of hands-on exercises to learn Temporal workflow development using Python.
- Python 3.8+
- Temporal Server running locally (port 7233)
- UV package manager
-
Install dependencies:
uv sync
-
Start Temporal Server (in separate terminal):
temporal server start-dev --search-attribute AccountId=Text
Duration: 30 minutes
Focus: Basic workflow and activity concepts
- Implement your first Temporal workflow
- Create activities for external operations
- Set up workers and execute workflows
Duration: 45 minutes
Focus: Signals and human-in-the-loop processes
- Handle external signals in workflows
- Implement conditional logic based on signals
- Build approval-based business processes
Duration: 30 minutes
Focus: Workflow observability and state monitoring
- Add query methods to expose workflow state
- Track workflow progress in real-time
- Monitor workflow execution from external clients
Duration: 15 minutes
Focus: Workflow discoverability and filtering
- Implement search attributes for workflow metadata
- Enable workflow filtering in Temporal Web UI
- Make workflows discoverable by business criteria
Duration: 30 minutes
Focus: Workflow observability and metadata
- Add activity summaries for runtime context
- Improve workflow observability in Temporal Web UI
- Understand metadata best practices
- Enhance debugging capabilities
Duration: 45 minutes
Focus: Testing workflows, activities, signals, and queries
- Write comprehensive unit tests for Temporal workflows
- Test activity success and failure scenarios
- Verify signal handling and query responses
- Mock external dependencies for predictable tests
Duration: 45 minutes
Focus: Manual retry patterns and signal-based error correction
- Implement manual retry patterns using signals
- Handle non-retryable activity failures
- Interactive error correction workflows
- Dynamic request updates during execution
Each exercise follows the same pattern:
-
Start the worker:
uv run exercise{N}/start_worker.py -
Execute the workflow:
uv run exercise{N}/start_workflow.py
For Exercise 6 (Unit Testing):
uv run exercise6/run_tests.pyComplete solutions are available in the solution{N}/ directories for reference.
Comprehensive unit tests for Temporal workflows and activities:
- Activity testing with mocked failures
- Workflow testing with different scenarios
- Query and signal testing
- State transition validation
Running Tests:
cd solution6
uv run python run_tests.pyManual retry patterns for handling invalid data scenarios:
- Non-retryable activity failures with
ApplicationError - Signal-based retry mechanisms
- Interactive error correction workflows
- Dynamic request updates during execution
- Workflows: Orchestration logic and state management
- Activities: External operations and side effects
- Workers: Task execution and polling
- Signals: External events and workflow modification
- Queries: Real-time workflow state inspection
- Search Attributes: Workflow metadata and discoverability
- Error Handling: Retries and failure management
- Unit Testing: Testing workflows and activities with mocked dependencies
- Manual Activity Retry: Signal-based retry patterns and error correction