Skip to main content

zeebe Python gRPC Gateway

Project description

zeebe Python gRPC gateway files

This package contains two gRPC Gateway Files needed to build a zeebe-client or a zeebe-worker (https://zeebe.io/) with Python.

Both files were generated following the instructions on this (now outdated) blog post: https://zeebe.io/blog/2018/11/grpc-generating-a-zeebe-python-client/

How to install and use this package?

pip install zeebe-grpc
import json
import logging
import grpc
from zeebe_grpc import gateway_pb2, gateway_pb2_grpc

with grpc.insecure_channel("zeebe:26500") as channel:
    stub = gateway_pb2_grpc.GatewayStub(channel)

    # print the topology of the zeebe cluster
    topology = stub.Topology(gateway_pb2.TopologyRequest())
    print(topology)

    # deploy a workflow definition
    with open('bpmn/echo.bpmn', 'rb') as workflow_definition_file:
        workflow_definition = workflow_definition_file.read()
        workflow = gateway_pb2.WorkflowRequestObject(
            name="ECHO",
            type=gateway_pb2.WorkflowRequestObject.BPMN,
            definition=workflow_definition
        )
    stub.DeployWorkflow(
        gateway_pb2.DeployWorkflowRequest(
            workflows=[workflow]
        )
    )

    # start a workflow instance
    variables = {
        "message": "This is a Message"
    }
    stub.CreateWorkflowInstance(
        gateway_pb2.CreateWorkflowInstanceRequest(
            bpmnProcessId='ECHO',
            version=-1,
            variables=json.dumps(variables)
        )
    )

    # start a worker
    activate_jobs_response = stub.ActivateJobs(
        gateway_pb2.ActivateJobsRequest(
            type='echo',
            worker='Python worker',
            timeout=60000,
            maxJobsToActivate=32
        )
    )
    for response in activate_jobs_response:
        for job in response.jobs:
            try:
                print(job.variables)
                stub.CompleteJob(gateway_pb2.CompleteJobRequest(jobKey=job.key, variables=json.dumps({})))
                logging.info('Job Completed')
            except Exception as e:
                stub.FailJob(gateway_pb2.FailJobRequest(jobKey=job.key))
                logging.info('Job Failed {}'.format(e))

How to (re)build the Python gRPC?

wget https://raw.githubusercontent.com/zeebe-io/zeebe/0.21.1/gateway-protocol/src/main/proto/gateway.proto -O ./zeebe_grpc/gateway.proto

python -m grpc_tools.protoc -I. --python_out=. --grpc_python_out=. ./zeebe_grpc/gateway.proto

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for zeebe-grpc, version 0.21.1.2
Filename, size File type Python version Upload date Hashes
Filename, size zeebe_grpc-0.21.1.2-py3-none-any.whl (11.7 kB) File type Wheel Python version py3 Upload date Hashes View hashes
Filename, size zeebe_grpc-0.21.1.2.tar.gz (11.4 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page