Преглед на файлове

Use pickle as the message serialization scheme (so we can pass complex python
objects in args and kwargs).

Ask Solem преди 17 години
родител
ревизия
f38a611e22
променени са 2 файла, в които са добавени 8 реда и са изтрити 1 реда
  1. 7 0
      celery/messaging.py
  2. 1 1
      setup.py

+ 7 - 0
celery/messaging.py

@@ -7,6 +7,11 @@ from carrot.messaging import Publisher, Consumer
 from celery import conf
 from celery import conf
 import uuid
 import uuid
 
 
+try:
+    import cPickle as pickle
+except ImportError:
+    import pickle
+
 
 
 class NoProcessConsumer(Consumer):
 class NoProcessConsumer(Consumer):
     """A consumer that raises an error if used with wait callbacks (i.e.
     """A consumer that raises an error if used with wait callbacks (i.e.
@@ -21,6 +26,7 @@ class TaskPublisher(Publisher):
     """The AMQP Task Publisher class."""
     """The AMQP Task Publisher class."""
     exchange = conf.AMQP_EXCHANGE
     exchange = conf.AMQP_EXCHANGE
     routing_key = conf.AMQP_PUBLISHER_ROUTING_KEY
     routing_key = conf.AMQP_PUBLISHER_ROUTING_KEY
+    encoder = pickle.dumps
 
 
     def delay_task(self, task_name, task_args, task_kwargs, **kwargs):
     def delay_task(self, task_name, task_args, task_kwargs, **kwargs):
         """Delay task for execution by the celery nodes."""
         """Delay task for execution by the celery nodes."""
@@ -72,3 +78,4 @@ class TaskConsumer(NoProcessConsumer):
     routing_key = conf.AMQP_CONSUMER_ROUTING_KEY
     routing_key = conf.AMQP_CONSUMER_ROUTING_KEY
     exchange_type = conf.AMQP_EXCHANGE_TYPE
     exchange_type = conf.AMQP_EXCHANGE_TYPE
     auto_ack = True
     auto_ack = True
+    decoder = pickle.loads

+ 1 - 1
setup.py

@@ -63,7 +63,7 @@ setup(
     zip_safe=False,
     zip_safe=False,
     install_requires=[
     install_requires=[
         'simplejson',
         'simplejson',
-        'carrot>=0.4.0',
+        #'carrot>=0.4.0',
         'django',
         'django',
     ],
     ],
     cmdclass = {"test": RunTests},
     cmdclass = {"test": RunTests},