2015-01-19 2 views
1

교체 :이 예전의 코드가 더 이상 존재하지 <strong>gevent.spawn_link_exception</strong>를 호출합니다 gevent.spawn_link_exception

def start(self, checkpoint=None): 
    for gl in self._greenlets: 
     gl.kill() 
    self.load_config() 
    self._greenlets = [ 
     gevent.spawn_link_exception(self.periodic_checkpoint, 5) ] 
    for master_uri in self._config: 
     self._greenlets.append(
      gevent.spawn_link_exception(
       self.replicate, master_uri, checkpoint)) 

그것이 gevent의 최신 버전과 함께 작동하도록 저를이 코드를 업데이트하는 데 도움이 바랍니다. 감사.

답변

1

Greenlet.link_exception 방법을 통해 동일한 문제에 접근 할 수 있습니다. 수정 된 예는 다음과 같습니다.

def start(self, checkpoint=None): 
     for gl in self._greenlets: 
      gl.kill() 
     self.load_config() 

     def exception_callback(greenlet): 
      print "Exception happened in ", greenlet 

     self._greenlets = [gevent.spawn(self.periodic_checkpoint, 5)] 
     self._greenlets[-1].link_exception(exception_callback) 

     for master_uri in self._config: 
      self._greenlets.append(gevent.spawn(self.replicate, master_uri, checkpoint)) 
      self._greenlets[-1].link_exception(exception_callback) 
관련 문제