Example #1
0
 def _eager_serialize_args(self, args=None, kwargs=None, **kwargs_):
     # Perform a noop serialization backtrip to assert args and kwargs
     # will be serialized appropriately when an async call through kombu
     # is actually performed. This is done to make sure we catch the
     # serializations errors with our test suite which runs with the
     # CELERY_ALWAYS_EAGER setting set to True. See the following Celery
     # issue for details https://github.com/celery/celery/issues/4008.
     app = self._app
     producer = kwargs_.get('producer') if kwargs else None
     with app.producer_or_acquire(producer) as producer:
         serializer = kwargs_.get('serializer', producer.serializer) or self._task_serializer
         registry.enable(serializer)
         args_content_type, args_content_encoding, args_data = registry.dumps(args, serializer)
         kwargs_content_type, kwargs_content_encoding, kwargs_data = registry.dumps(kwargs, serializer)
         args = registry.loads(args_data, args_content_type, args_content_encoding)
         kwargs = registry.loads(kwargs_data, kwargs_content_type, kwargs_content_encoding)
     return args, kwargs
Example #2
0
    def test_serializer(self, publisher, get_message_from_queue, queue,
                        serializer):
        payload = {"key": "value"}
        publisher.publish(payload, serializer=serializer)

        content_type, content_encoding, expected_body = (registry.dumps(
            payload, serializer=serializer))

        message = get_message_from_queue(queue.name, accept=content_type)
        assert message.body == expected_body
def dumps(data):
    """Serializes data using Kombu serializer.
    """
    try:
        # dumps will convert any strings into json-compatible strings.
        content_type, encoding, data = k_registry.dumps(
            data, serializer="json")
    except EncodeError as e:
        raise TypeError(e)
    return data
Example #4
0
 def _eager_serialize_result(self, result, **kwargs_):
     app = self._app
     producer = kwargs_.get('producer') if kwargs_ else None
     result_value = result._result
     with app.producer_or_acquire(producer) as producer:
         serializer = kwargs_.get('serializer', producer.serializer) or self._task_serializer
         registry.enable(serializer)
         dtype, encoding, data = registry.dumps(result_value, serializer)
         result._result = registry.loads(data, dtype, encoding)
     return result
Example #5
0
    def test_serializer(
        self, publisher, get_message_from_queue, queue, serializer
    ):
        payload = {"key": "value"}
        publisher.publish(payload, serializer=serializer)

        content_type, content_encoding, expected_body = (
            registry.dumps(payload, serializer=serializer)
        )

        message = get_message_from_queue(queue.name, accept=content_type)
        assert message.body == expected_body
Example #6
0
 def test_queue_dump(self):
     b = binding(self.exchange, 'rk')
     q = Queue('foo', self.exchange, 'rk', bindings=[b])
     d = q.as_dict(recurse=True)
     assert d['bindings'][0]['routing_key'] == 'rk'
     registry.dumps(d)
Example #7
0
 def test_queue_dump(self):
     b = binding(self.exchange, 'rk')
     q = Queue('foo', self.exchange, 'rk', bindings=[b])
     d = q.as_dict(recurse=True)
     self.assertEqual(d['bindings'][0]['routing_key'], 'rk')
     registry.dumps(d)