瀏覽代碼

Merge branch 'kmike/master'

Ask Solem 15 年之前
父節點
當前提交
6d64e87e5e
共有 5 個文件被更改,包括 17 次插入8 次删除
  1. 1 1
      celery/models.py
  2. 2 2
      celery/tests/test_loaders.py
  3. 11 2
      celery/tests/test_worker_job.py
  4. 2 2
      celery/worker/job.py
  5. 1 1
      contrib/supervisord/supervisord.conf

+ 1 - 1
celery/models.py

@@ -16,7 +16,7 @@ class TaskMeta(models.Model):
     task_id = models.CharField(_(u"task id"), max_length=255, unique=True)
     status = models.CharField(_(u"task status"), max_length=50,
             default=states.PENDING, choices=TASK_STATUSES_CHOICES)
-    result = PickledObjectField()
+    result = PickledObjectField(null=True)
     date_done = models.DateTimeField(_(u"done at"), auto_now=True)
     traceback = models.TextField(_(u"traceback"), blank=True, null=True)
 

+ 2 - 2
celery/tests/test_loaders.py

@@ -60,8 +60,8 @@ class TestLoaderBase(unittest.TestCase):
         self.assertEqual(self.loader.conf.foo, "bar")
 
     def test_import_default_modules(self):
-        self.assertSameElements(self.loader.import_default_modules(),
-                                [os, sys, task])
+        self.assertItemsEqual(self.loader.import_default_modules(),
+                              [os, sys, task])
 
 
 class TestDjangoLoader(unittest.TestCase):

+ 11 - 2
celery/tests/test_worker_job.py

@@ -387,11 +387,11 @@ class TestTaskWrapper(unittest.TestCase):
                     "delivery_info": {},
                     "task_name": tw.task_name})
 
-    def test_on_failure(self):
+    def _test_on_failure(self, exception):
         tid = gen_unique_id()
         tw = TaskWrapper(mytask.name, tid, [4], {"f": "x"})
         try:
-            raise Exception("Inside unit tests")
+            raise exception
         except Exception:
             exc_info = ExceptionInfo(sys.exc_info())
 
@@ -409,3 +409,12 @@ class TestTaskWrapper(unittest.TestCase):
         self.assertIn("ERROR", logvalue)
 
         conf.CELERY_SEND_TASK_ERROR_EMAILS = False
+
+    def test_on_failure(self):
+        self._test_on_failure(Exception("Inside unit tests"))
+
+    def test_on_failure_unicode_exception(self):
+        self._test_on_failure(Exception(u"Бобры атакуют"))
+
+    def test_on_failure_utf8_exception(self):
+        self._test_on_failure(Exception(u"Бобры атакуют".encode('utf8')))

+ 2 - 2
celery/worker/job.py

@@ -345,8 +345,8 @@ class TaskWrapper(object):
             "hostname": socket.gethostname(),
             "id": self.task_id,
             "name": self.task_name,
-            "exc": exc_info.exception,
-            "traceback": exc_info.traceback,
+            "exc": repr(exc_info.exception),
+            "traceback": unicode(exc_info.traceback, 'utf-8'),
             "args": self.args,
             "kwargs": self.kwargs,
         }

+ 1 - 1
contrib/supervisord/supervisord.conf

@@ -18,7 +18,7 @@ childlogdir=/var/log/supervisord/            ; where child log files will live
 supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
 
 [supervisorctl]
-serverurl=unix:///tmp/supervisor.sock; use unix:// schem for a unix sockets.
+serverurl=unix:///tmp/supervisor.sock ; use unix:// schem for a unix sockets.
 
 
 [include]