压缩网络流量
概述
PyMongo 提供了一个压缩消息的连接选项,这可以减少 MongoDB 和您的应用程序之间通过网络传输的数据量。
PyMongo 支持以下压缩算法。
Snappy:MongoDB 3.6 及以上版本可用。此选项需要 python-snappy 软件包。
Zlib:MongoDB 3.6 及以上版本可用。此选项需要 zlib 模块,Python v1.5 及以上版本的标准库中包含该模块。
如果您没有指定压缩算法,PyMongo 不会压缩您的网络流量。如果您指定了多个压缩算法,驱动程序将选择 MongoDB 实例支持的列表中的第一个。
指定压缩算法
要启用与您的 MongoDB 实例的连接压缩,请使用compressors
连接选项并指定您要使用的压缩算法。您可以通过以下两种方式完成此操作
将算法作为参数传递给
MongoClient
构造函数。在连接字符串中指定算法。
以下代码示例展示了这两种选项
client = pymongo.MongoClient("mongodb://<db_username>:<db_password>@<hostname>:<port>", compressors = "snappy,zstd,zlib")
uri = ("mongodb://<db_username>:<db_password>@<hostname>:<port>/?" "compressors=snappy,zstd,zlib") client = pymongo.MongoClient(uri)
设置zlib压缩级别
如果您将zlib
指定为您的压缩算法之一,您还可以使用zlibCompressionLevel
选项来指定一个压缩级别。此选项接受一个介于-1
和9
之间的整数值
-1:(默认)。zlib使用其默认压缩级别(通常是
6
)。0:不压缩。
1:最快的速度但压缩效果最低。
9:最佳的压缩效果但速度最慢。
以下代码示例指定了zlib
压缩算法以及zlibCompressionLevel
选项的值为1
client = pymongo.MongoClient("mongodb://<db_username>:<db_password>@<hostname>:<port>", compressors = "zlib", zlibCompressionLevel=1)
uri = ("mongodb://<db_username>:<db_password>@<hostname>:<port>/?" "compressors=zlib" "zlibCompressionLevel=1") client = pymongo.MongoClient(uri)