def _process(self): while True: ret = api.trampoline(self.client.Connection._sock, read=True) if ret: self._handle_message(ret) api.call_after_global(0, self._g_run.greenlet.switch) else: # this semaphore stops the message queue greenlet from # switching into us whilst we're trying to read data self._semaphore.acquire() self.client.Process(1) self._semaphore.release()
def sig_child(signal, frame): from eventlet import api api.call_after_global(0, wait_on_children)