def _run(self): self.running = True _retry = self._RetryLimit event.send( signal=signals.INIT, sender=self ) while self.running: gevent.sleep(0) try: msg = self.recv() if not msg: continue #logging.debug('!>>> recv|%s'%(msg,)) event.send( signal=signals.RECV, sender=self, message=msg ) except WarningErr, e: logging.warning(e) except Exception ,e: logging.warning(str(e)) if self.debug: traceback.print_exc() logging.warning('process fail: retry|%s'%self.retry) _retry -=1 if _retry<0: break gevent.sleep(self._SleepLimit) event.send( signal=signals.INIT, sender=self ) continue
def parse(self, response): event.send(signal=signals.RESPONSE, sender=self, response=response)
def fire_init(self): event.send(signal=signals.INIT,sender=self)
def fire_stop(self): event.send(signal=signals.STOP,sender=self)
def fire_recv(self): event.send(signal=signals.RECV,sender=self, message='hello')
def fire_init(self): event.send(signal=signals.INIT, sender=self)
def fire_stop(self): event.send(signal=signals.STOP, sender=self)
def fire_recv(self): event.send(signal=signals.RECV, sender=self, message='hello')
def parse(self, response): event.send( signal=signals.RESPONSE, sender=self, response = response )
logging.warning(str(e)) if self.debug: traceback.print_exc() logging.warning('process fail: retry|%s'%self.retry) _retry -=1 if _retry<0: break gevent.sleep(self._SleepLimit) event.send( signal=signals.INIT, sender=self ) continue #----------------------- _retry = self._RetryLimit event.send( signal=signals.STOP, sender=self ) class QueuePuller(Actor): def __init__(self, retry=0, debug=False): Actor.__init__(self, retry, debug) self._inbox = gevent.queue.Queue() def recv(self): return self._inbox.get() def send(self,message): return self._inbox.put(message)