diff --git a/mitogen/core.py b/mitogen/core.py index 1cdb4428..e5a714f3 100644 --- a/mitogen/core.py +++ b/mitogen/core.py @@ -215,7 +215,8 @@ def io_op(func, *args): while True: try: return func(*args), False - except (select.error, OSError), e: + except (select.error, OSError): + e = sys.exc_info()[1] _vv and IOLOG.debug('io_op(%r) -> OSError: %s', func, e) if e[0] == errno.EINTR: continue @@ -327,7 +328,8 @@ class Message(object): self = cls(**kwargs) try: self.data = cPickle.dumps(obj, protocol=2) - except cPickle.PicklingError, e: + except cPickle.PicklingError: + e = sys.exc_info()[1] self.data = cPickle.dumps(CallError(e), protocol=2) return self @@ -350,8 +352,9 @@ class Message(object): # Must occur off the broker thread. obj = unpickler.load() self._unpickled = obj - except (TypeError, ValueError), ex: - raise StreamError('invalid message: %s', ex) + except (TypeError, ValueError): + e = sys.exc_info()[1] + raise StreamError('invalid message: %s', e) if throw: if obj == _DEAD and throw_dead: @@ -1032,8 +1035,8 @@ class Latch(object): e = None try: io_op(select.select, [rsock], [], [], timeout) - except Exception, e: - pass + except Exception: + e = sys.exc_info()[1] self._lock.acquire() try: @@ -1074,7 +1077,8 @@ class Latch(object): def _wake(self, sock): try: os.write(sock.fileno(), '\x7f') - except OSError, e: + except OSError: + e = sys.exc_info()[1] if e[0] != errno.EBADF: raise @@ -1166,7 +1170,8 @@ class Waker(BasicStream): # ignore EBADF here. try: self.transmit_side.write(' ') - except OSError, e: + except OSError: + e = sys.exc_info()[1] if e[0] != errno.EBADF: raise @@ -1626,7 +1631,8 @@ class ExternalContext(object): for msg in self.channel: try: msg.reply(self._dispatch_one(msg)) - except Exception, e: + except Exception: + e = sys.exc_info()[1] _v and LOG.debug('_dispatch_calls: %s', e) msg.reply(CallError(e)) self.dispatch_stopped = True diff --git a/mitogen/fork.py b/mitogen/fork.py index 5fd2281c..466fe3e0 100644 --- a/mitogen/fork.py +++ b/mitogen/fork.py @@ -116,7 +116,7 @@ class Stream(mitogen.parent.Stream): def _wrap_child_main(self, childfp): try: self._child_main(childfp) - except BaseException, e: + except BaseException: handle_child_crash() def _child_main(self, childfp): diff --git a/mitogen/parent.py b/mitogen/parent.py index ba4962e6..f1974907 100644 --- a/mitogen/parent.py +++ b/mitogen/parent.py @@ -393,11 +393,11 @@ def _proxy_connect(name, method_name, kwargs, econtext): name=name, **kwargs ) - except mitogen.core.StreamError, e: + except mitogen.core.StreamError: return { 'id': None, 'name': None, - 'msg': str(e), + 'msg': str(sys.exc_info()[1]), } return { diff --git a/mitogen/service.py b/mitogen/service.py index abbc6bb1..bd93eff1 100644 --- a/mitogen/service.py +++ b/mitogen/service.py @@ -181,11 +181,13 @@ class Service(object): response = self._on_receive_message(msg) if response is not self.NO_REPLY: msg.reply(response) - except mitogen.core.CallError, e: + except mitogen.core.CallError: LOG.warning('%r: %s', self, msg) + e = sys.exc_info()[1] msg.reply(e) - except Exception, e: + except Exception: LOG.exception('While invoking %r.dispatch()', self) + e = sys.exc_info()[1] msg.reply(mitogen.core.CallError(e)) @@ -250,9 +252,11 @@ class DeduplicatingService(Service): try: response = getattr(self, method_name)(**kwargs) self._produce_response(key, response) - except mitogen.core.CallError, e: + except mitogen.core.CallError: + e = sys.exc_info()[1] self._produce_response(key, e) - except Exception, e: + except Exception: + e = sys.exc_info()[1] self._produce_response(key, mitogen.core.CallError(e)) return self.NO_REPLY diff --git a/mitogen/unix.py b/mitogen/unix.py index 90b8f8bb..376ddf65 100644 --- a/mitogen/unix.py +++ b/mitogen/unix.py @@ -37,6 +37,7 @@ import errno import os import socket import struct +import sys import tempfile import mitogen.core @@ -49,7 +50,8 @@ def is_path_dead(path): s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) try: s.connect(path) - except socket.error, e: + except socket.error: + e = sys.exc_info()[1] return e[0] in (errno.ECONNREFUSED, errno.ENOENT) return False