conductor-worker-python/pyrest.py

38 lines
1.3 KiB
Python

from conductor.ConductorWorker import ConductorWorker
from pyexecplugins.pyexecplugins import Http
import configparser
import sys
import os
def log(task, message):
print("[{}:{}][{}:{}] - {}".format(task["workflowType"], task["workflowInstanceId"], task["taskDefName"], task["workflowTask"]["taskReferenceName"], message))
def pyrest(task):
log(task, "Starting execution ...")
log(task, "Data is {} {} {}".format(task["inputData"].get("method"), task["inputData"]["url"], task["inputData"].get("body")))
http = Http(task["inputData"])
try:
ret = http.execute()
return ret
except Exception as exc:
exc_type, exc_obj, exc_tb = sys.exc_info()
fname = os.path.split(exc_tb.tb_frame.f_code.co_filename)[1]
return {
"status" : "FAILED",
"output" : { "message" : "Internal error: {}".format(exc)}, "logs" : ["one","two"]
}
def main():
cfg = configparser.ConfigParser()
cfg.read("config.cfg")
threads = cfg["pyrest"].getint("threads")
pollrate = cfg["pyrest"].getfloat("pollrate")
server = os.environ.get('CONDUCTOR_SERVER', cfg["common"]["server"])
cc = ConductorWorker(server, threads, pollrate, "pyrest")
cc.start('pyrest', pyrest, True)
if __name__ == '__main__':
main()