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
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
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
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 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)
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)