This document is for Kombu's development version, which can be significantly different from previous releases. Get the stable docs here: 5.0.

消息序列化- kombu.serialization

序列化实用程序。

概述

集中支持数据结构的编码/解码。包含JSON、PICKLE、msgpack和YAML序列化程序。

可以选择安装对YAML的支持 PyYAML 程序包已安装。

(可选)安装对 msgpack 如果 msgpack-python 程序包已安装。

例外情况

exception kombu.serialization.SerializerNotInstalled[源代码]

未安装对请求的序列化类型的支持。

序列化

kombu.serialization.dumps(data, serializer=None)

编码数据。

将数据结构序列化为适合作为AMQP消息体发送的字符串。

论点:

Data(list,dict,str):要发送的消息数据。

Serializer(Str):一个可选字符串,表示

要将数据封送到其中的序列化方法。(例如, jsonraw ,或 pickle )。

如果 None (默认),则将使用json,除非 data 是一种 strunicode 对象。在后一种情况下,不会发生序列化,因为这是不必要的。

请注意,如果 serializer ,则将使用该序列化方法,即使 strunicode 对象是传入的。

退货:
  • Tuple[str, str, str] ( A three-item tuple containing the )

  • 内容类型(例如, application/json )、内容编码(例如,

  • utf-8 )和包含序列化数据的字符串。

引发SerializerNotInstated:

如果序列化方法:Requred不可用。

kombu.serialization.loads(data, content_type, content_encoding, accept=None, force=False, _trusted_content=frozenset({'application/data', 'application/text'}))

对序列化数据进行解码。

将数据流反序列化为使用 dumps 基于 content_type

论点:

Data(字节、缓冲区、字符串):要反序列化的消息数据。

Content_type(Str):数据的内容类型。

(例如, application/json )。

Content_Coding(Str):数据的内容编码。

(例如, utf-8binary ,或 us-ascii )。

Accept(Set):要接受的内容类型列表。

引发不允许的内容:

如果内容类型不被接受。:

退货:

Any

Rtype:

未序列化的数据。

kombu.serialization.raw_encode(data)[源代码]

特例串行器。

登记处

kombu.serialization.register(name, encoder, decoder, content_type, content_encoding='utf-8')

注册新的编码器/解码器。

论点:

Name(Str):序列化方法的方便名称。

编码器(Callable):将传递给Python数据的方法

结构,并应返回表示序列化数据的字符串。如果 None ,则只会注册一个解码器。编码将不可能实现。

Decder(Callable):将向其传递字符串的方法

表示序列化的数据,并应返回一个Python数据结构。如果 None ,则只会注册编码器。解码将是不可能的。

Content_type(Str):描述序列化的

结构。

Content_Coding(Str):内容编码(字符集)

这个 decoder 方法将返回。通常会是 utf-8us-ascii ,或 binary

kombu.serialization.unregister(name)

取消注册已注册的编码器/解码器。

论点:

名称(Str):已注册的序列化方法名称。

引发SerializerNotInstated:

如果找不到名为:的串行化程序。

kombu.serialization.registry = <kombu.serialization.SerializerRegistry object>

序列化程序/反序列化程序的全局注册表。