Python Agent

November 15, 2020 ยท View on GitHub

This is a generic example of Python agent following the generic structure within CoFlows.

Note: The python <-> CoreCLR interop is achieved through PythonNet.

import clr

import System
import QuantApp.Kernel as qak
import QuantApp.Engine as qae

import json
import datetime

workspaceID = "$WID$"

def Add(id, data):
    pass

def Exchange(id, data):
    pass

def Remove(id, data):
    pass
    
def Load(data):
    pass
    
def Body(data):
    cmd = json.loads(data)
    if 'Data' in cmd and cmd['Data'] == 'Initial Execution':    
        print('     Agent Initial Execute @ : ' + str(datetime.datetime.now()))

    return data

def Job(timestamp, data):
    pass

def pkg():
    return qae.FPKG(
    workspaceID + "-Agent", #ID
    workspaceID, #Workflow ID
    "Python XXX Agent", #Name
    "Python XXX Agent", #Description
    None, #M ID Listener
    qae.Utils.SetFunction("Load", qae.Load(Load)), 
    qae.Utils.SetFunction("Add", qak.MCallback(Add)), 
    qae.Utils.SetFunction("Exchange", qak.MCallback(Exchange)), 
    qae.Utils.SetFunction("Remove", qak.MCallback(Remove)), 
    qae.Utils.SetFunction("Body", qae.Body(Body)), 
    "0 * * ? * *", #Cron Schedule
    qae.Utils.SetFunction("Job", qae.Job(Job))
    )