소스 검색

Don't use ** when creating an Event from a message, because the message might
contain unicode. Thanks to tvaughan.

Ask Solem 15 년 전
부모
커밋
f75a8f5bc0
1개의 변경된 파일8개의 추가작업 그리고 2개의 파일을 삭제
  1. 8 2
      celery/events.py

+ 8 - 2
celery/events.py

@@ -5,13 +5,19 @@ import threading
 from celery.messaging import EventPublisher, EventConsumer
 
 
+def create_event(type, fields):
+    std = {"type": type,
+           "timestamp": fields.get("timestamp") or time.time()}
+    return dict(fields, **std)
+
+
 def Event(type, **fields):
     """Create an event.
 
     An event is a dictionary, the only required field is the type.
 
     """
-    return dict(fields, type=type, timestamp=time.time())
+    return create_event(type, fields)
 
 
 class EventDispatcher(object):
@@ -96,4 +102,4 @@ class EventReceiver(object):
 
     def _receive(self, message_data, message):
         type = message_data.pop("type").lower()
-        self.process(type, Event(type, **message_data))
+        self.process(type, create_event(type, message_data))