Browse Source

Use except .. as exc

Ask Solem 14 năm trước cách đây
mục cha
commit
2c4fa2890b
43 tập tin đã thay đổi với 79 bổ sung và 79 xóa
  1. 1 1
      celery/app/task.py
  2. 1 1
      celery/apps/beat.py
  3. 1 1
      celery/apps/worker.py
  4. 1 1
      celery/backends/__init__.py
  5. 4 4
      celery/beat.py
  6. 2 2
      celery/bin/camqadm.py
  7. 2 2
      celery/bin/celery.py
  8. 2 2
      celery/bin/celeryd_multi.py
  9. 1 1
      celery/contrib/batches.py
  10. 2 2
      celery/contrib/rdb.py
  11. 1 1
      celery/events/__init__.py
  12. 1 1
      celery/events/cursesmon.py
  13. 1 1
      celery/loaders/base.py
  14. 8 8
      celery/platforms.py
  15. 1 1
      celery/security/utils.py
  16. 2 2
      celery/task/base.py
  17. 1 1
      celery/task/http.py
  18. 6 6
      celery/task/trace.py
  19. 1 1
      celery/tests/backends/test_amqp.py
  20. 1 1
      celery/tests/backends/test_cache.py
  21. 2 2
      celery/tests/backends/test_database.py
  22. 1 1
      celery/tests/tasks/test_tasks.py
  23. 2 2
      celery/tests/utilities/test_pickle.py
  24. 4 4
      celery/tests/worker/test_request.py
  25. 1 1
      celery/tests/worker/test_worker.py
  26. 1 1
      celery/utils/dispatch/saferef.py
  27. 1 1
      celery/utils/dispatch/signal.py
  28. 1 1
      celery/utils/imports.py
  29. 1 1
      celery/utils/log.py
  30. 1 1
      celery/utils/mail.py
  31. 1 1
      celery/utils/serialization.py
  32. 1 1
      celery/utils/threads.py
  33. 3 3
      celery/utils/timer2.py
  34. 3 3
      celery/worker/__init__.py
  35. 1 1
      celery/worker/autoreload.py
  36. 1 1
      celery/worker/autoscale.py
  37. 7 7
      celery/worker/consumer.py
  38. 1 1
      celery/worker/control.py
  39. 1 1
      celery/worker/mediator.py
  40. 2 2
      docs/userguide/tasks.rst
  41. 1 1
      examples/eventlet/tasks.py
  42. 1 1
      examples/gevent/tasks.py
  43. 1 1
      funtests/suite/test_leak.py

+ 1 - 1
celery/app/task.py

@@ -512,7 +512,7 @@ class Task(object):
             ...     twitter = Twitter(oauth=auth)
             ...     try:
             ...         twitter.post_status_update(message)
-            ...     except twitter.FailWhale, exc:
+            ...     except twitter.FailWhale as exc:
             ...         # Retry in 5 minutes.
             ...         raise tweet.retry(countdown=60 * 5, exc=exc)
 

+ 1 - 1
celery/apps/beat.py

@@ -95,7 +95,7 @@ class Beat(configurated):
         try:
             self.install_sync_handler(beat)
             beat.start()
-        except Exception, exc:
+        except Exception as exc:
             logger.critical('celerybeat raised exception %s: %r',
                             exc.__class__, exc,
                             exc_info=True)

+ 1 - 1
celery/apps/worker.py

@@ -179,7 +179,7 @@ class Worker(configurated):
     def init_queues(self):
         try:
             self.app.select_queues(self.use_queues)
-        except KeyError, exc:
+        except KeyError as exc:
             raise ImproperlyConfigured(UNKNOWN_QUEUE % (self.use_queues, exc))
         if self.app.conf.CELERY_WORKER_DIRECT:
             self.app.amqp.queues.select_add(worker_direct(self.hostname))

+ 1 - 1
celery/backends/__init__.py

@@ -43,7 +43,7 @@ def get_backend_cls(backend=None, loader=None):
     aliases = dict(BACKEND_ALIASES, **loader.override_backends)
     try:
         return symbol_by_name(backend, aliases)
-    except ValueError, exc:
+    except ValueError as exc:
         raise ValueError, ValueError(UNKNOWN_BACKEND % (
                     backend, exc)), sys.exc_info()[2]
 

+ 4 - 4
celery/beat.py

@@ -174,7 +174,7 @@ class Scheduler(object):
             info('Scheduler: Sending due task %s', entry.task)
             try:
                 result = self.apply_async(entry, publisher=publisher)
-            except Exception, exc:
+            except Exception as exc:
                 error('Message Error: %s\n%s',
                       exc, traceback.format_stack(), exc_info=True)
             else:
@@ -222,7 +222,7 @@ class Scheduler(object):
                 result = self.send_task(entry.task, entry.args, entry.kwargs,
                                         publisher=publisher,
                                         **entry.options)
-        except Exception, exc:
+        except Exception as exc:
             raise SchedulingError, SchedulingError(
                 "Couldn't apply scheduled task %s: %s" % (
                     entry.name, exc)), sys.exc_info()[2]
@@ -324,7 +324,7 @@ class PersistentScheduler(Scheduler):
         for suffix in self.known_suffixes:
             try:
                 os.remove(self.schedule_filename + suffix)
-            except OSError, exc:
+            except OSError as exc:
                 if exc.errno != errno.ENOENT:
                     raise
 
@@ -333,7 +333,7 @@ class PersistentScheduler(Scheduler):
             self._store = self.persistence.open(self.schedule_filename,
                                                 writeback=True)
             entries = self._store.setdefault('entries', {})
-        except Exception, exc:
+        except Exception as exc:
             error('Removing corrupted schedule file %r: %r',
                   self.schedule_filename, exc, exc_info=True)
             self._remove_db()

+ 2 - 2
celery/bin/camqadm.py

@@ -304,9 +304,9 @@ class AMQShell(cmd.Cmd):
             self.counter = self.inc_counter()
             try:
                 self.respond(self.dispatch(cmd, arg))
-            except (AttributeError, KeyError), exc:
+            except (AttributeError, KeyError) as exc:
                 self.default(line)
-            except Exception, exc:
+            except Exception as exc:
                 self.say(exc)
                 self.needs_reconnect = True
 

+ 2 - 2
celery/bin/celery.py

@@ -78,7 +78,7 @@ def load_extension_commands(namespace='celery.commands'):
         sym = ':'.join([ep.module_name, ep.attrs[0]])
         try:
             cls = symbol_by_name(sym)
-        except (ImportError, SyntaxError), exc:
+        except (ImportError, SyntaxError) as exc:
             warnings.warn('Cannot load extension %r: %r' % (sym, exc))
         else:
             command(cls, name=ep.name)
@@ -109,7 +109,7 @@ class Command(BaseCommand):
     def __call__(self, *args, **kwargs):
         try:
             ret = self.run(*args, **kwargs)
-        except Error, exc:
+        except Error as exc:
             self.error(self.colored.red('Error: %s' % exc))
             return exc.status
 

+ 2 - 2
celery/bin/celeryd_multi.py

@@ -229,7 +229,7 @@ class MultiTool(object):
     def signal_node(self, nodename, pid, sig):
         try:
             os.kill(pid, sig)
-        except OSError, exc:
+        except OSError as exc:
             if exc.errno != errno.ESRCH:
                 raise
             self.note('Could not signal %s (%s): No such process' % (
@@ -240,7 +240,7 @@ class MultiTool(object):
     def node_alive(self, pid):
         try:
             os.kill(pid, 0)
-        except OSError, exc:
+        except OSError as exc:
             if exc.errno == errno.ESRCH:
                 return False
             raise

+ 1 - 1
celery/contrib/batches.py

@@ -79,7 +79,7 @@ def apply_batches_task(task, args, loglevel, logfile):
     task.push_request(loglevel=loglevel, logfile=logfile)
     try:
         result = task(*args)
-    except Exception, exc:
+    except Exception as exc:
         result = None
         logger.error('Error: %r', exc, exc_info=True)
     finally:

+ 2 - 2
celery/contrib/rdb.py

@@ -96,7 +96,7 @@ class Rdb(Pdb):
             this_port = port + skew + i
             try:
                 _sock.bind((host, this_port))
-            except socket.error, exc:
+            except socket.error as exc:
                 if exc.errno in [errno.EADDRINUSE, errno.EINVAL]:
                     continue
                 raise
@@ -135,7 +135,7 @@ class Rdb(Pdb):
             frame = _frame().f_back
         try:
             Pdb.set_trace(self, frame)
-        except socket.error, exc:
+        except socket.error as exc:
             # connection reset by peer.
             if exc.errno != errno.ECONNRESET:
                 raise

+ 1 - 1
celery/events/__init__.py

@@ -131,7 +131,7 @@ class EventDispatcher(object):
                 try:
                     self.publisher.publish(event,
                                            routing_key=type.replace('-', '.'))
-                except Exception, exc:
+                except Exception as exc:
                     if not self.buffer_while_offline:
                         raise
                     self._outbound_buffer.append((type, fields, exc))

+ 1 - 1
celery/events/cursesmon.py

@@ -487,7 +487,7 @@ def capture_events(app, state, display):  # pragma: no cover
                 display.init_screen()
                 with recv.consumer():
                     recv.drain_events(timeout=1, ignore_timeouts=True)
-            except (conn.connection_errors, conn.channel_errors), exc:
+            except conn.connection_errors + conn.channel_errors as exc:
                 sys.stderr.write('Connection lost: %r' % (exc, ))
 
 

+ 1 - 1
celery/loaders/base.py

@@ -184,7 +184,7 @@ class BaseLoader(object):
             else:
                 try:
                     value = NAMESPACES[ns][key].to_python(value)
-                except ValueError, exc:
+                except ValueError as exc:
                     # display key name in error message.
                     raise ValueError('%r: %s' % (ns_key, exc))
             return ns_key, value

+ 8 - 8
celery/platforms.py

@@ -105,7 +105,7 @@ class PIDFile(object):
         """Acquire lock."""
         try:
             self.write_pid()
-        except OSError, exc:
+        except OSError as exc:
             raise LockFailed, LockFailed(str(exc)), sys.exc_info()[2]
         return self
     __enter__ = acquire
@@ -123,7 +123,7 @@ class PIDFile(object):
         """Reads and returns the current pid."""
         try:
             fh = open(self.path, 'r')
-        except IOError, exc:
+        except IOError as exc:
             if exc.errno == errno.ENOENT:
                 return
             raise
@@ -145,7 +145,7 @@ class PIDFile(object):
         """Removes the lock."""
         try:
             os.unlink(self.path)
-        except OSError, exc:
+        except OSError as exc:
             if exc.errno in (errno.ENOENT, errno.EACCES):
                 return
             raise
@@ -155,7 +155,7 @@ class PIDFile(object):
         (does not respond to signals)."""
         try:
             pid = self.read_pid()
-        except ValueError, exc:
+        except ValueError as exc:
             sys.stderr.write('Broken pidfile found. Removing it.\n')
             self.remove()
             return True
@@ -165,7 +165,7 @@ class PIDFile(object):
 
         try:
             os.kill(pid, 0)
-        except os.error, exc:
+        except os.error as exc:
             if exc.errno == errno.ESRCH:
                 sys.stderr.write('Stale pidfile exists. Removing it.\n')
                 self.remove()
@@ -371,7 +371,7 @@ def _setgroups_hack(groups):
             if len(groups) <= 1:
                 raise
             groups[:] = groups[:-1]
-        except OSError, exc:  # error from the OS.
+        except OSError as exc:  # error from the OS.
             if exc.errno != errno.EINVAL or len(groups) <= 1:
                 raise
             groups[:] = groups[:-1]
@@ -385,7 +385,7 @@ def setgroups(groups):
         pass
     try:
         return _setgroups_hack(groups[:max_groups])
-    except OSError, exc:
+    except OSError as exc:
         if exc.errno != errno.EPERM:
             raise
         if any(group not in groups for group in os.getgroups()):
@@ -611,6 +611,6 @@ def shellsplit(s, posix=True):
 def ignore_EBADF():
     try:
         yield
-    except OSError, exc:
+    except OSError as exc:
         if exc.errno != errno.EBADF:
             raise

+ 1 - 1
celery/security/utils.py

@@ -26,5 +26,5 @@ def reraise_errors(msg='%r', errors=None):
     errors = (crypto.Error, ) if errors is None else errors
     try:
         yield
-    except errors, exc:
+    except errors as exc:
         raise SecurityError, SecurityError(msg % (exc, )), sys.exc_info()[2]

+ 2 - 2
celery/task/base.py

@@ -175,7 +175,7 @@ def task(*args, **kwargs):
         def refresh_feed(url):
             try:
                 return Feed.objects.get(url=url).refresh()
-            except socket.error, exc:
+            except socket.error as exc:
                 refresh_feed.retry(exc=exc)
 
     Calling the resulting task:
@@ -210,7 +210,7 @@ def periodic_task(*args, **options):
                 def refresh_feed(url):
                     try:
                         return Feed.objects.get(url=url).refresh()
-                    except socket.error, exc:
+                    except socket.error as exc:
                         current.retry(exc=exc)
 
             Calling the resulting task:

+ 1 - 1
celery/task/http.py

@@ -67,7 +67,7 @@ def extract_response(raw_response, loads=anyjson.loads):
         raise InvalidResponseError('Empty response')
     try:
         payload = loads(raw_response)
-    except ValueError, exc:
+    except ValueError as exc:
         raise InvalidResponseError, InvalidResponseError(
                 str(exc)), sys.exc_info()[2]
 

+ 6 - 6
celery/task/trace.py

@@ -211,11 +211,11 @@ def build_tracer(name, task, loader=None, hostname=None, store_errors=True,
                 try:
                     R = retval = fun(*args, **kwargs)
                     state = SUCCESS
-                except RetryTaskError, exc:
+                except RetryTaskError as exc:
                     I = Info(RETRY, exc)
                     state, retval = I.state, I.retval
                     R = I.handle_error_state(task, eager=eager)
-                except Exception, exc:
+                except Exception as exc:
                     if propagate:
                         raise
                     I = Info(FAILURE, exc)
@@ -223,7 +223,7 @@ def build_tracer(name, task, loader=None, hostname=None, store_errors=True,
                     R = I.handle_error_state(task, eager=eager)
                     [subtask(errback).apply_async((uuid, ))
                         for errback in task_request.errbacks or []]
-                except BaseException, exc:
+                except BaseException as exc:
                     raise
                 except:  # pragma: no cover
                     # For Python2.5 where raising strings are still allowed
@@ -265,10 +265,10 @@ def build_tracer(name, task, loader=None, hostname=None, store_errors=True,
                         loader_cleanup()
                     except (KeyboardInterrupt, SystemExit, MemoryError):
                         raise
-                    except Exception, exc:
+                    except Exception as exc:
                         _logger.error('Process cleanup failed: %r', exc,
                                       exc_info=True)
-        except Exception, exc:
+        except Exception as exc:
             if eager:
                 raise
             R = report_internal_error(task, exc)
@@ -282,7 +282,7 @@ def trace_task(task, uuid, args, kwargs, request={}, **opts):
         if task.__trace__ is None:
             task.__trace__ = build_tracer(task.name, task, **opts)
         return task.__trace__(uuid, args, kwargs, request)[0]
-    except Exception, exc:
+    except Exception as exc:
         return report_internal_error(task, exc)
 
 

+ 1 - 1
celery/tests/backends/test_amqp.py

@@ -63,7 +63,7 @@ class test_AMQPBackend(AppCase):
         tid3 = uuid()
         try:
             raise KeyError('foo')
-        except KeyError, exception:
+        except KeyError as exception:
             einfo = ExceptionInfo()
             tb1.mark_as_failure(tid3, exception, traceback=einfo.traceback)
             self.assertEqual(tb2.get_status(tid3), states.FAILURE)

+ 1 - 1
celery/tests/backends/test_cache.py

@@ -50,7 +50,7 @@ class test_CacheBackend(Case):
     def test_mark_as_failure(self):
         try:
             raise KeyError('foo')
-        except KeyError, exception:
+        except KeyError as exception:
             self.tb.mark_as_failure(self.tid, exception)
             self.assertEqual(self.tb.get_status(self.tid), states.FAILURE)
             self.assertIsInstance(self.tb.get_result(self.tid), KeyError)

+ 2 - 2
celery/tests/backends/test_database.py

@@ -128,7 +128,7 @@ class test_DatabaseBackend(Case):
         tid = uuid()
         try:
             raise KeyError('foo')
-        except KeyError, exception:
+        except KeyError as exception:
             import traceback
             trace = '\n'.join(traceback.format_stack())
             tb.mark_as_retry(tid, exception, traceback=trace)
@@ -142,7 +142,7 @@ class test_DatabaseBackend(Case):
         tid3 = uuid()
         try:
             raise KeyError('foo')
-        except KeyError, exception:
+        except KeyError as exception:
             import traceback
             trace = '\n'.join(traceback.format_stack())
             tb.mark_as_failure(tid3, exception, traceback=trace)

+ 1 - 1
celery/tests/tasks/test_tasks.py

@@ -110,7 +110,7 @@ def retry_task_customexc(arg1, arg2, kwarg=1, **kwargs):
     else:
         try:
             raise MyCustomException('Elaine Marie Benes')
-        except MyCustomException, exc:
+        except MyCustomException as exc:
             kwargs.update(kwarg=kwarg)
             raise current.retry(countdown=0, exc=exc)
 

+ 2 - 2
celery/tests/utilities/test_pickle.py

@@ -21,7 +21,7 @@ class test_Pickle(Case):
         exc = None
         try:
             raise RegularException('RegularException raised')
-        except RegularException, exc_:
+        except RegularException as exc_:
             exc = exc_
 
         pickled = pickle.dumps({'exception': exc})
@@ -37,7 +37,7 @@ class test_Pickle(Case):
         try:
             raise ArgOverrideException('ArgOverrideException raised',
                     status_code=100)
-        except ArgOverrideException, exc_:
+        except ArgOverrideException as exc_:
             exc = exc_
 
         pickled = pickle.dumps({'exception': exc})

+ 4 - 4
celery/tests/worker/test_request.py

@@ -141,7 +141,7 @@ class test_RetryTaskError(Case):
     def test_retry_task_error(self):
         try:
             raise Exception('foo')
-        except Exception, exc:
+        except Exception as exc:
             ret = RetryTaskError('Retrying task', exc)
             self.assertEqual(ret.exc, exc)
 
@@ -600,10 +600,10 @@ class test_TaskRequest(Case):
         mytask.request.update({'id': tid})
         try:
             raise ValueError('foo')
-        except Exception, exc:
+        except Exception as exc:
             try:
                 raise RetryTaskError(str(exc), exc=exc)
-            except RetryTaskError, exc:
+            except RetryTaskError as exc:
                 w = TraceInfo(states.RETRY, exc)
                 w.handle_retry(mytask, store_errors=False)
                 self.assertEqual(mytask.backend.get_status(tid),
@@ -620,7 +620,7 @@ class test_TaskRequest(Case):
         try:
             try:
                 raise ValueError('foo')
-            except Exception, exc:
+            except Exception as exc:
                 w = TraceInfo(states.FAILURE, exc)
                 w.handle_failure(mytask, store_errors=False)
                 self.assertEqual(mytask.backend.get_status(tid),

+ 1 - 1
celery/tests/worker/test_worker.py

@@ -849,7 +849,7 @@ class test_WorkController(AppCase):
 
         try:
             raise KeyError('foo')
-        except KeyError, exc:
+        except KeyError as exc:
             Timers(worker).on_timer_error(exc)
             msg, args = self.logger.error.call_args[0]
             self.assertIn('KeyError', msg % args)

+ 1 - 1
celery/utils/dispatch/saferef.py

@@ -138,7 +138,7 @@ class BoundMethodWeakref(object):  # pragma: no cover
                 try:
                     if callable(function):
                         function(self)
-                except Exception, exc:
+                except Exception as exc:
                     try:
                         traceback.print_exc()
                     except AttributeError:

+ 1 - 1
celery/utils/dispatch/signal.py

@@ -176,7 +176,7 @@ class Signal(object):  # pragma: no cover
         for receiver in self._live_receivers(_make_id(sender)):
             try:
                 response = receiver(signal=self, sender=sender, **named)
-            except Exception, err:
+            except Exception as err:
                 responses.append((receiver, err))
             else:
                 responses.append((receiver, response))

+ 1 - 1
celery/utils/imports.py

@@ -85,7 +85,7 @@ def symbol_by_name(name, aliases={}, imp=None, package=None,
     try:
         try:
             module = imp(module_name, package=package, **kwargs)
-        except ValueError, exc:
+        except ValueError as exc:
             raise ValueError, ValueError(
                     "Couldn't import %r: %s" % (name, exc)), sys.exc_info()[2]
         return getattr(module, cls_name) if cls_name else module

+ 1 - 1
celery/utils/log.py

@@ -86,7 +86,7 @@ class ColorFormatter(logging.Formatter):
         if self.use_color and color:
             try:
                 record.msg = safe_str(str_t(color(record.msg)))
-            except Exception, exc:
+            except Exception as exc:
                 record.msg = '<Unrepresentable %r: %r>' % (
                         type(record.msg), exc)
                 record.exc_info = True

+ 1 - 1
celery/utils/mail.py

@@ -71,7 +71,7 @@ class Mailer(object):
                     self._send(message)
                 finally:
                     socket.setdefaulttimeout(old_timeout)
-        except Exception, exc:
+        except Exception as exc:
             if not fail_silently:
                 raise
             warnings.warn(SendmailWarning(

+ 1 - 1
celery/utils/serialization.py

@@ -111,7 +111,7 @@ class UnpickleableExceptionWrapper(Exception):
 
         >>> try:
         ...     something_raising_unpickleable_exc()
-        >>> except Exception, e:
+        >>> except Exception as e:
         ...     exc = UnpickleableException(e.__class__.__module__,
         ...                                 e.__class__.__name__,
         ...                                 e.args)

+ 1 - 1
celery/utils/threads.py

@@ -69,7 +69,7 @@ class bgThread(Thread):
             while not shutdown_set():
                 try:
                     body()
-                except Exception, exc:
+                except Exception as exc:
                     try:
                         self.on_crash('%r crashed: %r', self.name, exc)
                         self._set_stopped()

+ 3 - 3
celery/utils/timer2.py

@@ -89,7 +89,7 @@ class Schedule(object):
     def apply_entry(self, entry):
         try:
             entry()
-        except Exception, exc:
+        except Exception as exc:
             if not self.handle_error(exc):
                 logger.error('Error in timer: %r', exc, exc_info=True)
 
@@ -114,7 +114,7 @@ class Schedule(object):
         if isinstance(eta, datetime):
             try:
                 eta = to_timestamp(eta)
-            except OverflowError, exc:
+            except OverflowError as exc:
                 if not self.handle_error(exc):
                     raise
                 return
@@ -267,7 +267,7 @@ class Timer(Thread):
                 # we lost the race at interpreter shutdown,
                 # so gc collected built-in modules.
                 pass
-        except Exception, exc:
+        except Exception as exc:
             logger.error('Thread Timer crashed: %r', exc, exc_info=True)
             os._exit(1)
 

+ 3 - 3
celery/worker/__init__.py

@@ -351,7 +351,7 @@ class WorkController(configurated):
                 logger.debug('%s OK!', qualname(component))
         except SystemTerminate:
             self.terminate()
-        except Exception, exc:
+        except Exception as exc:
             logger.error('Unrecoverable error: %r', exc,
                          exc_info=True)
             self.stop()
@@ -369,13 +369,13 @@ class WorkController(configurated):
         """Process task by sending it to the pool of workers."""
         try:
             req.execute_using_pool(self.pool)
-        except Exception, exc:
+        except Exception as exc:
             logger.critical('Internal error: %r\n%s',
                             exc, traceback.format_exc(), exc_info=True)
         except SystemTerminate:
             self.terminate()
             raise
-        except BaseException, exc:
+        except BaseException as exc:
             self.stop()
             raise exc
 

+ 1 - 1
celery/worker/autoreload.py

@@ -248,7 +248,7 @@ class Autoreloader(bgThread):
         self.on_init()
         try:
             self._monitor.start()
-        except OSError, exc:
+        except OSError as exc:
             if exc.errno not in (errno.EINTR, errno.EAGAIN):
                 raise
 

+ 1 - 1
celery/worker/autoscale.py

@@ -137,7 +137,7 @@ class Autoscaler(bgThread):
             self.pool.shrink(n)
         except ValueError:
             debug("Autoscaler won't scale down: all processes busy.")
-        except Exception, exc:
+        except Exception as exc:
             error('Autoscaler: scale_down: %r', exc, exc_info=True)
 
     def info(self):

+ 7 - 7
celery/worker/consumer.py

@@ -391,9 +391,9 @@ class Consumer(object):
                     return self.handle_unknown_message(body, message)
                 try:
                     strategies[name](message, body, message.ack_log_error)
-                except KeyError, exc:
+                except KeyError as exc:
                     self.handle_unknown_task(body, message, exc)
-                except InvalidTaskError, exc:
+                except InvalidTaskError as exc:
                     self.handle_invalid_task(body, message, exc)
                 #fire_timers()
 
@@ -473,7 +473,7 @@ class Consumer(object):
         if task.eta:
             try:
                 eta = timer2.to_timestamp(task.eta)
-            except OverflowError, exc:
+            except OverflowError as exc:
                 error("Couldn't convert eta %s to timestamp: %r. Task: %r",
                       task.eta, exc, task.info(safe=True), exc_info=True)
                 task.acknowledge()
@@ -489,9 +489,9 @@ class Consumer(object):
         """Process remote control command message."""
         try:
             self.pidbox_node.handle_message(body, message)
-        except KeyError, exc:
+        except KeyError as exc:
             error('No such control command: %s', exc)
-        except Exception, exc:
+        except Exception as exc:
             error('Control command error: %r', exc, exc_info=True)
             self.reset_pidbox_node()
 
@@ -534,9 +534,9 @@ class Consumer(object):
 
         try:
             self.strategies[name](message, body, message.ack_log_error)
-        except KeyError, exc:
+        except KeyError as exc:
             self.handle_unknown_task(body, message, exc)
-        except InvalidTaskError, exc:
+        except InvalidTaskError as exc:
             self.handle_invalid_task(body, message, exc)
 
     def maybe_conn_error(self, fun):

+ 1 - 1
celery/worker/control.py

@@ -98,7 +98,7 @@ def rate_limit(panel, task_name, rate_limit, **kwargs):
 
     try:
         timeutils.rate(rate_limit)
-    except ValueError, exc:
+    except ValueError as exc:
         return {'error': 'Invalid rate limit string: %s' % exc}
 
     try:

+ 1 - 1
celery/worker/mediator.py

@@ -75,7 +75,7 @@ class Mediator(bgThread):
 
         try:
             self.callback(task)
-        except Exception, exc:
+        except Exception as exc:
             logger.error('Mediator callback raised exception %r',
                          exc, exc_info=True,
                          extra={'data': {'id': task.id,

+ 2 - 2
docs/userguide/tasks.rst

@@ -291,7 +291,7 @@ Here's an example using ``retry``:
         try:
             twitter = Twitter(oauth)
             twitter.update_status(tweet)
-        except (Twitter.FailWhaleError, Twitter.LoginError), exc:
+        except (Twitter.FailWhaleError, Twitter.LoginError) as exc:
             raise send_twitter_status.retry(exc=exc)
 
 Here we used the `exc` argument to pass the current exception to
@@ -329,7 +329,7 @@ override this default.
     def add(x, y):
         try:
             ...
-        except Exception, exc:
+        except Exception as exc:
             raise add.retry(exc=exc, countdown=60)  # override the default and
                                                     # retry in 1 minute
 

+ 1 - 1
examples/eventlet/tasks.py

@@ -7,6 +7,6 @@ def urlopen(url):
     print('Opening: %r' % (url, ))
     try:
         body = urllib2.urlopen(url).read()
-    except Exception, exc:
+    except Exception as exc:
         print('URL %r gave error: %r' % (url, exc))
     return len(body)

+ 1 - 1
examples/gevent/tasks.py

@@ -8,7 +8,7 @@ def urlopen(url):
     print('Opening: %r' % (url, ))
     try:
         body = urllib2.urlopen(url).read()
-    except Exception, exc:
+    except Exception as exc:
         print('Exception for %r: %r' % (url, exc, ))
         return url, 0
     print('Done with: %r' % (url, ))

+ 1 - 1
funtests/suite/test_leak.py

@@ -39,7 +39,7 @@ class LeakFunCase(unittest.TestCase):
             return int(subprocess.Popen(
                         shlex.split(cmd % {'pid': os.getpid()}),
                             stdout=subprocess.PIPE).communicate()[0].strip())
-        except OSError, exc:
+        except OSError as exc:
             raise SkipTest('Can't execute command: %r: %r' % (cmd, exc))
 
     def sample_allocated(self, fun, *args, **kwargs):