{"repo":"wayfair-incubator/dagger","free":true,"listed":false,"github":"https://github.com/wayfair-incubator/dagger","clone":"git clone https://github.com/wayfair-incubator/dagger.git","description":"A simple Python-based distributed workflow engine","language":"Python","stars":59,"topics":["faust-streaming","kafka","python","workflow-engine","orchestrator","state-machine","rocksdb","scalable","aerospike","asyncio"],"license":"MIT","category":"workflow-automation","readme_excerpt":"Dagger Dagger is a distributed, scalable, durable, and highly available orchestration engine to execute asynchronous and synchronous long-running business logic in a scalable and resilient way. Dagger requires Python 3.7 or later for the new async/await syntax, and variable type annotations. Pizza Ordering and Delivery Workflow Example Here's an example of how to use the library to build and run a Pizza Ordering Workflow: The PizzaWorkflow consists of 2 Processes: Order : Responsible for communicating with the order service to place a pizza order(CommandTask) and wait for the order to be ready(ListenerTask) Delivery: Once the order is ready, this process communicates with the delivery service to start delivery of the pizza order(CommandTask) Step 1 Instantiate Dagger Step 2 Define Leaf Command and Listener Tasks For Order Process Let's assume that the Order Microservice processes incoming orders over a Kafka Topic - pizza order topic with the JSON schema Using this information let's build out the OrderCommandTask by overriding the execute method that implements the business logic on how to send the payload to the Order Service over a Kafka topic After executing the OrderCommandTask , the workflow should enter a WAIT STATE until it receives a message from the OrderService about the status of the order. Let's assume that Order Service sends a message on a Kafka Topic: order status topic when the order is ready in the following JSON format Let's model the OrderListenerTask to pr","default_branch":null,"files":null,"tree":[],"storefront":"/r/wayfair-incubator","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/wayfair-incubator/dagger/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}