================================================ Agents for Job Execution and Communication Tasks ================================================ ($Id$) >>> config = ''' ... controller(names=['core.sample']) ... scheduler(name='core') ... logger(name='default', standard=30) ... system.winapi = 'testing' ... ''' >>> from cybertools.agent.main import setup >>> master = setup(config) Starting agent application... Using controllers core.sample. OutlookCrawler ============== The agent uses Twisted's cooperative multitasking model. OutlookCrawler is derived from MailCrawler. The OutlookCrawler returns a deferred which itself holds a list of MailResource Objects. Returns a deferred that must be supplied with a callback method (and in most cases also an errback method). The TestCase here is using subsidiary methods which replace calls to the "real Outlook dlls". >>> controller = master.controllers[0] >>> controller.createAgent('crawl.outlook', 'sample02') In the next step we request the start of a job, again via the controller. >>> controller.enterJob('sample', 'sample02', params=dict(inbox=True)) The job is not executed immediately - we have to hand over control to the twisted reactor first. >>> from cybertools.agent.tests import tester >>> tester.iterate() Outlook.Application retrieved Namespace MAPI retrieved retrieving Outlook default folder collecting Mails from folder Attachment: Invitation.pdf Attachment: 21.pdf Attachment saved Attachment saved Job 00001 completed; result: [<...MailResource...>, <...MailResource...>, <...MailResource...>];