如何确保 pymongo 对有线协议使用 snappy 压缩

How to ensure pymongo is using snappy compression for wire protocol

我正在使用 mongodb 3.6 服务器和 pymongo 3.4。

如何确保 mongodb 正在使用 snappy 压缩进行数据传输?

在 mongodb 日志中,我看到 snappy 已启用:

app_metadata=(formatVersion=1),assert=(commit_timestamp=none,read_timestamp=none),block_allocation=best,block_compressor=snappy,

但是,当我通过 pymongo 发出请求时,我如何确定实际应用了 snappy 压缩?我已经尝试将 mongodb://localhost/?compressors=zlib 添加到连接字符串,但添加 compressors=whatever 似乎没有任何区别。

如何确保对有线协议应用压缩? pymongo 的版本重要吗?

https://docs.mongodb.com/manual/reference/program/mongo/#cmdoption-mongo-networkmessagecompressors 读作:

Messages are compressed when both parties enable network compression. Otherwise, messages between the parties are uncompressed.

在客户端我读到https://api.mongodb.com/python/current/changelog.html#changes-in-version-3-7-0:

Support for wire protocol compression

因为它在 v3.7 之前不受支持。

您在日志中看到的 block_compressor 可能是存储压缩,而不是线路压缩。它在 mongodb 配置服务器端的存储选项中定义,不能从客户端更改。