/examples-python

Examples of workflows implemented in Python using Zenaton

Primary LanguagePython

⚠️ This repository is abandoned.


Easy Asynchronous Jobs Manager for Developers
Explore the docs »
Website · Python Library · Tutorial in Python

Zenaton examples for Python

Zenaton helps developers to easily run, monitor and orchestrate background jobs on your workers without managing a queuing system. In addition to this, a monitoring dashboard shows you in real-time tasks executions and helps you to handle errors.

This repository contains examples of workflows built with Zenaton. These examples illustrates how Zenaton orchestrates tasks that are executed on different workers.

Installation

Download this repo

git clone https://github.com/zenaton/examples-python.git && cd examples-python

then add an .env file

cp .env.example .env

and populate it with your application id and api token found here.

Or use the .env.example file in this repo.

These a the minimal requirements to run the Zenaton client:

ZENATON_APP_ID=*****************
ZENATON_API_TOKEN=***************************
ZENATON_APP_ENV=dev

Running Locally

Install dependencies

pip3 install -r requirements.txt

Then, you need to install a Zenaton worker

curl https://install.zenaton.com | sh

and start it, and make it listen to your configuration:

zenaton start; zenaton listen --env=.env --boot=boot.py

Your all set!

Running on Docker

Simply run

docker-compose build; docker-compose up

You're all set!

Your workflows will be processed by your worker, so you won't see anything except the stdout and stderr, respectively zenaton.out and zenaton.err. Look at these files :)

Example 1: Single task execution

This example showcases

  • A single execution of a task.
python3 launch_task.py

Example 2 : Sequential tasks execution

This example showcases

  • a sequential execution of three tasks. The second and third tasks are executed only when the previous one is processed.
  • In a sequential task execution, you can get the output of a task. The result of a task can be used by the next one.


Sequential Workflow Diagram

python3 launch_sequential.py

Example 3: Parallel tasks execution

This example showcases

  • a parallel execution of 2 tasks
  • a third task that is executed only after both first two tasks were processed

Parallel Workflow Diagram

python3 launch_parallel.py

Example 4: Asynchronous tasks execution

this example showcases

  • Asynchronous executions of Task A and Task B (fire and forget)
  • Then sequential executions of Task C and Task D

Asynchronous Workflow Diagram

python3 launch_asynchronous.py

When a task is dispatched asynchronously, the workflow continues its execution without waiting for the task completion. Consequently, a task asynchronous dispatching always returns a null value.

Example 5: Event

This example showcases

  • how to change a workflow's behaviour based on an external event

Event Workflow Diagram

python3 launch_event.py

Example 6: Wait

This example showcases

  • how the provided Wait task can be used to pause the workflow for a specified duration

Wait Workflow Diagram

```python python3 launch_wait.py ```

Example 7: Wait Event

This example showcases

  • how the provided Wait task can also be used to pause the workflow up to receiving a specific external event

WaitEvent Workflow Diagram

```python python3 launch_wait_event.py ```

Example 8: Recursive Workflow

This example showcases

  • how launching events or workflows directly from orchestrated tasks allows you to schedule recurring workflows
python3 launch_recursive.py

Example 9: Workflow Versions

This example showcases

  • how to update your workflow implementation, even while previous versions are still running
python3 launch_version.py

Example 10: Managing Errors

This example showcases

  • how a failed task appear on Zenaton website
  • how to retry a failed task using the retry button

Error Workflow Diagram

python3 launch_error.py

Example 11: Automatic retry of failed tasks

This example showcases

  • how a failed task can be retried automatically
  • how to customize the automatic retry policy
python3 launch_automatic_retry.php

Example 12: Schedule a task

This example showcases

  • how to schedule a task to make it run periodically
python3 schedule_task_a.py

Real-life Examples

Triggering An Email After 3 Days of Cold Weather (Medium Article, Source Code)