#! /usr/bin/env python from Pyro.EventService.Clients import Publisher from Pyro.errors import NamingError import random, time symbols = ('SUN','MICROSOFT','IBM','ORACLE','SAP','NOVELL') class StockMarket(Publisher): def __init__(self, symbols): Publisher.__init__(self) self.symbols=symbols def publishQuote(self): symbol=random.choice(self.symbols) quote =round(random.random()*100+50,2) print symbol,'=',quote self.publish('STOCKQUOTE.'+symbol, quote) def main(): try: market1 = StockMarket(symbols[:3]) market2 = StockMarket(symbols[3:]) print 'Publishing quotes.' while 1: time.sleep(random.random()) market = random.choice( (market1, market2) ) market.publishQuote() except NamingError: print 'Cannot find service. Is the Event Service running?' if __name__=='__main__': main()