Sfoglia il codice sorgente

Use except .. as exc

Ask Solem 12 anni fa
parent
commit
2c4fa2890b
43 ha cambiato i file con 79 aggiunte e 79 eliminazioni
  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):