Forráskód Böngészése

Events: repr complex objects sent as event fields.

It's a bad idea to sent pickled objects with the events, as the receiving
part may even not have the classes installed.

And anyway, the events are meant for information not deep introspection.

Closes #106. Thanks to dfdeshom. Please verify.
Ask Solem 15 éve
szülő
commit
f91ade4367
2 módosított fájl, 4 hozzáadás és 4 törlés
  1. 2 2
      celery/worker/job.py
  2. 2 2
      celery/worker/listener.py

+ 2 - 2
celery/worker/job.py

@@ -346,7 +346,7 @@ class TaskWrapper(object):
 
 
         runtime = time.time() - self.time_start
         runtime = time.time() - self.time_start
         self.send_event("task-succeeded", uuid=self.task_id,
         self.send_event("task-succeeded", uuid=self.task_id,
-                        result=ret_value, runtime=runtime)
+                        result=repr(ret_value), runtime=runtime)
 
 
         msg = self.success_msg.strip() % {
         msg = self.success_msg.strip() % {
                 "id": self.task_id,
                 "id": self.task_id,
@@ -361,7 +361,7 @@ class TaskWrapper(object):
             self.acknowledge()
             self.acknowledge()
 
 
         self.send_event("task-failed", uuid=self.task_id,
         self.send_event("task-failed", uuid=self.task_id,
-                                       exception=exc_info.exception,
+                                       exception=repr(exc_info.exception),
                                        traceback=exc_info.traceback)
                                        traceback=exc_info.traceback)
 
 
         context = {
         context = {

+ 2 - 2
celery/worker/listener.py

@@ -113,8 +113,8 @@ class CarrotListener(object):
             return task.on_ack()
             return task.on_ack()
 
 
         self.event_dispatcher.send("task-received", uuid=task.task_id,
         self.event_dispatcher.send("task-received", uuid=task.task_id,
-                name=task.task_name, args=task.args, kwargs=task.kwargs,
-                retries=task.retries, eta=eta)
+                name=task.task_name, args=repr(task.args),
+                kwargs=repr(task.kwargs), retries=task.retries, eta=eta)
 
 
         if eta:
         if eta:
             if not isinstance(eta, datetime):
             if not isinstance(eta, datetime):