瀏覽代碼

Catch exceptions, we don't want celeryd to die

Ask Solem 16 年之前
父節點
當前提交
0894db2bf0
共有 1 個文件被更改,包括 11 次插入11 次删除
  1. 11 11
      celery/worker.py

+ 11 - 11
celery/worker.py

@@ -63,14 +63,14 @@ class TaskDaemon(object):
                             "loglevel": self.loglevel}
                             "loglevel": self.loglevel}
         task_func_params.update(message_data)
         task_func_params.update(message_data)
 
 
-        #try:
-        result = self.pool.apply_async(task_func, [], task_func_params)
-        #except:
-        #    message.reject()
-        #    raise
+        try:
+            result = self.pool.apply_async(task_func, [], task_func_params)
+        except Exception, error:
+            self.logger.critical("Worker got exception %s: %s\n%s" % (
+                error.__class__, error, traceback.format_exc()))
+        else:
+            message.ack()
 
 
-
-        message.ack()
         return result, task_name, task_id
         return result, task_name, task_id
 
 
     def run_periodic_tasks(self):
     def run_periodic_tasks(self):
@@ -97,9 +97,9 @@ class TaskDaemon(object):
                 self.logger.info("Unknown task requeued and ignored: %s" % (
                 self.logger.info("Unknown task requeued and ignored: %s" % (
                                     e))
                                     e))
                 continue
                 continue
-            #except Exception, e:
-            #    self.logger.critical("Raised %s: %s\n%s" % (
-            #                 e.__class__, e, traceback.format_exc()))
-            #    continue
+            except Exception, e:
+                self.logger.critical("Message queue raised %s: %s\n%s" % (
+                             e.__class__, e, traceback.format_exc()))
+                continue
            
            
             results.add(result, task_name, task_id)
             results.add(result, task_name, task_id)