================================================ Agents for Job Execution and Communication Tasks ================================================ ($Id$) >>> from cybertools.agent.tests import tester Communication Handling ====================== Communication services are provided by handlers specified in the ``talk`` package. Set up and start an agent with a server --------------------------------------- >>> config = ''' ... controller(names=['core.sample']) ... scheduler(name='core') ... logger(name='default', standard=30) ... talk.server(names=['http']) ... talk.server.http(port=8081) ... talk.http(handler='testing') ... ''' >>> from cybertools.agent.main import setup >>> master = setup(config) Starting agent application... Using controllers core.sample. Setting up HTTP handler for port 8081. >>> master.servers [] We also provide a class to be used for creating subscribers, i.e. objects that receive messages. >>> class Subscriber(object): ... def __init__(self, name): ... self.name = name ... def onMessage(self, interaction, data): ... print ('%s receiving: interaction=%s, data=%s' % ... (self.name, interaction, data)) ... tester.stop() >>> serverSub = Subscriber('server') >>> master.servers[0].subscribe(serverSub, 'testing') Set up a client --------------- In order to simplify the testing we do not set up a separate agent to work with the client but handle the client directly. >>> from cybertools.agent.talk.http import HttpClient >>> client = HttpClient(master) >>> clientSub = Subscriber('client') >>> session = client.connect(clientSub, 'http://localhost:8081/') Run the communication dialog ---------------------------- >>> tester.run() client receiving: interaction=None, data={u'status': u'OK'} Fin de Partie ============= >>> tester.stopThreads()