Conductor python client
Project description
Python client for Conductor
Python client for Conductor provides two sets of functions:
- Workflow management APIs (start, terminate, get workflow status etc.)
- Worker execution framework
NOTE: This repository has been forked from Netflix:conductor's
client/python
folder. Apart from the results of renaming the module fromconductor
topyconductor
, (as pip already contains aconductor
module), there are no code changes. This repository is mostly meant to act as an easy way to install the python client forNetflix:conductor
. There are also attempts made to add documentation to the client overall. As far as possible, the library will be kept in sync with the upstream branch.
Install
pip install pyconductor
Using Workflow Management API
Python class WorkflowClient
provides client API calls to the conductor server to start manage the workflows.
Example
import sys
from pyconductor import conductor
import json
def getStatus(workflowId):
workflowClient = conductor.WorkflowClient('http://localhost:8080/api')
workflow_json = workflowClient.getWorkflow(workflowId)
print json.dumps(workflow_json, indent=True, separators=(',', ': '))
return workflow_json
Task Worker Execution
Task worker execution APIs facilitates execution of a task worker using python client. The API provides necessary mechanism to poll for task work at regular interval and executing the python worker in a separate threads.
Example
The following python script demonstrates workers for the kitchensink workflow.
from pyconductor.ConductorWorker import ConductorWorker
def execute(task):
return {'status': 'COMPLETED', 'output': {'mod': 5, 'taskToExecute': 'task_1', 'oddEven': 0}, 'logs': ['one', 'two']}
def execute4(task):
forkTasks = [{"name": "task_1", "taskReferenceName": "task_1_1", "type": "SIMPLE"},{"name": "sub_workflow_4", "taskReferenceName": "wf_dyn", "type": "SUB_WORKFLOW", "subWorkflowParam": {"name": "sub_flow_1"}}];
input = {'task_1_1': {}, 'wf_dyn': {}}
return {'status': 'COMPLETED', 'output': {'mod': 5, 'taskToExecute': 'task_1', 'oddEven': 0, 'dynamicTasks': forkTasks, 'inputs': input}}
def main():
print 'Hello World'
cc = ConductorWorker('http://localhost:8080/api', 1, 0.1)
for x in range(1, 30):
if(x == 4):
cc.start('task_{0}'.format(x), execute4, False)
else:
cc.start('task_{0}'.format(x), execute, False)
cc.start('task_30', execute, True)
if __name__ == '__main__':
main()
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file pyconductor-0.1.3.tar.gz
.
File metadata
- Download URL: pyconductor-0.1.3.tar.gz
- Upload date:
- Size: 5.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.21.0 setuptools/39.2.0 requests-toolbelt/0.8.0 tqdm/4.23.3 CPython/3.6.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c309c1d6a8fd58a85612ef9b08c61cfd7f2e6b7c0447f400d4d9e86694dbc5a8 |
|
MD5 | f4bc1e5f2ac94d21273917e3946bcea2 |
|
BLAKE2b-256 | b19de0fe234b23b0a55ebcb3f019b5669a9b7ab4111d023d401b4ce5ea067c4c |