def _feed(buffer, notempty, send, writelock, close): debug('starting thread to feed data to pipe') nacquire = notempty.acquire nrelease = notempty.release nwait = notempty.wait bpopleft = buffer.popleft sentinel = _sentinel if sys.platform != 'win32': wacquire = writelock.acquire wrelease = writelock.release else: wacquire = None try: while 1: nacquire() try: if not buffer: nwait() finally: nrelease() try: while 1: obj = bpopleft() if obj is sentinel: debug('feeder thread got sentinel -- exiting') close() return if wacquire is None: send(obj) else: wacquire() try: send(obj) finally: wrelease() except IndexError: pass except Exception, e: # Since this runs in a daemon thread the objects it uses # may be become unusable while the process is cleaning up. # We ignore errors which happen after the process has # started to cleanup. if currentProcess()._exiting: subWarning('error in queue thread: %s', e) else: raise
def _serve(): while 1: try: conn = _listener.accept() handle_wanted, destination_pid = conn.recv() _cache.remove(handle_wanted) sendHandle(conn, handle_wanted, destination_pid) closeHandle(handle_wanted) conn.close() except (SystemExit, KeyboardInterrupt): raise except: if not processing.currentProcess()._exiting: import traceback subWarning('thread for sharing handles raised exception :\n' + '-' * 79 + '\n' + traceback.format_exc() + '-' * 79)
def _serve(): while 1: try: conn = _listener.accept() handle_wanted, destination_pid = conn.recv() _cache.remove(handle_wanted) sendHandle(conn, handle_wanted, destination_pid) closeHandle(handle_wanted) conn.close() except (SystemExit, KeyboardInterrupt): raise except: if not processing.currentProcess()._exiting: import traceback subWarning( 'thread for sharing handles raised exception :\n' + '-'*79 + '\n' + traceback.format_exc() + '-'*79 )
def handleRequest(self, c): ''' Handle a new connection ''' funcname = result = request = None try: deliverChallenge(c, self.authkey) answerChallenge(c, self.authkey) request = c.recv() ignore, funcname, args, kwds = request assert funcname in self.public, '%r unrecognized' % funcname func = getattr(self, funcname) except (SystemExit, KeyboardInterrupt): raise except Exception: msg = ('#ERROR', RemoteError()) else: try: result = func(c, *args, **kwds) msg = ('#RETURN', result) except (SystemExit, KeyboardInterrupt): raise except Exception: msg = ('#ERROR', RemoteError()) try: c.send(msg) except (SystemExit, KeyboardInterrupt): raise except Exception, e: if msg[0] == '#ERROR': subWarning('Failure to send exception: %r', msg[1]) else: subWarning('Failure to send result: %r', msg[1]) subWarning(' ... request was %r', request) subWarning(' ... exception was %r', e)
result) res_obj, res_exposed = self.id_to_obj[res_ident] token = Token('iter', self.address, res_ident) result = IteratorProxy(token, incref=False) msg = ('#RETURN', result) except (SystemExit, KeyboardInterrupt): raise except Exception: msg = ('#ERROR', RemoteError()) else: msg = ('#ERROR', RemoteError()) send(msg) except (SystemExit, KeyboardInterrupt): raise except Exception, e: subWarning('exception in thread serving %r', threading.currentThread().getName()) subWarning(' ... message was %r', msg) subWarning(' ... exception was %r', e) connection.close() sys.exit(1) def fallbackGetValue(self, connection, ident, obj): return obj def fallbackStr(self, connection, ident, obj): return str(obj) def fallbackRepr(self, connection, ident, obj): return repr(obj) def fallbackCmp(self, connection, ident, obj, *args):
) res_obj, res_exposed = self.id_to_obj[res_ident] token = Token('iter', self.address, res_ident) result = IteratorProxy(token, incref=False) msg = ('#RETURN', result) except (SystemExit, KeyboardInterrupt): raise except Exception: msg = ('#ERROR', RemoteError()) else: msg = ('#ERROR', RemoteError()) send(msg) except (SystemExit, KeyboardInterrupt): raise except Exception, e: subWarning('exception in thread serving %r', threading.currentThread().getName()) subWarning(' ... message was %r', msg) subWarning(' ... exception was %r', e) connection.close() sys.exit(1) def fallbackGetValue(self, connection, ident, obj): return obj def fallbackStr(self, connection, ident, obj): return str(obj) def fallbackRepr(self, connection, ident, obj): return repr(obj) def fallbackCmp(self, connection, ident, obj, *args):