发行说明¶
在这里,你可以查看 Nameko 版本之间的完整变更列表。版本号的形式为 headline.major.minor。向后兼容的更改仅增加次要版本号。
版本 2.14.1¶
发布于 2021-12-05
nameko test 的退出代码命令遵循 pytest 的结果,并抑制了“模块已被导入”的警告 (#748)
支持 Python 3.10 (#747)
升级 CI 中使用的 pytest 版本 (#729)
版本 2.14.0¶
发布于 2021-10-18
支持在使用 WebSocket 实现时使用 Werkzeug 2.x (#724)
加载配置文件时停止不安全的 YAML 解析器使用 (#722)
停止 Eventlet 的自动猴子补丁 (#727)
支持禁用事件交换声明 (#730)
提供通过配置设置 AMQP 登录方法的方式 (#713)
使不稳定的测试更可靠 (#704)
将 CI 转换为 GitHub Actions (#715)
一些文档修复 (#710, #683)
在 Python 3.7 到 3.9 上运行 CI (#726)
版本 2.13.0¶
发布于 2020-09-11
为 entrypoint_hook 添加超时参数 (#622)
删除或忽略测试套件中的一堆弃用警告 (#613)
修复 Python 3.7 上关于 collections.abc 的警告 (#649)
为 CLI 工具添加 --version 标志 (#662)
移除对 Python 3.4 的支持,并支持 Werkzeug > 1 (#680)
版本 2.12.0¶
发布于 2019-03-18
重构 utils,使 standalone.events 不再导入 eventlet (#580)
与最新依赖项兼容 (moto #577, pyyaml 和 kombu #612)
定时器现在在再次触发之前会等待已启动的 entrypoint 完成,如文档所述 (#579, #303)
定时器也进行了改进,以避免漂移 (#614)
在记录的 AMQP URI 中隐藏密码 (#582)
文档更新 (#587, #591, #276, #596)
Nameko shell 改为在非 TTY 模式下不捕获异常 (#597)
版本 2.11.0¶
发布于 2018-08-09
与 Kombu 4 和 PyAMQP 2+ 兼容,最低支持的 Kombu 版本现在为 4.2 (#564)
版本 2.10.0¶
发布于 2018-08-06
将最低支持的 Eventlet 版本提升至 0.20.1 (#557)
版本 2.9.1¶
发布于 2018-07-20
所有 AMQP 扩展现在支持 SSL 连接,可通过 AMQP_SSL 配置键进行配置 (#524)。
恢复与 Eventlet 0.22+ 的兼容性 (#556)。
以 ERROR 级别记录未处理的工作线程异常,而不是 INFO 级别 (#547)。
版本 2.9.0¶
发布于 2018-05-30
RPC 回复队列现在设置为过期而不是自动删除,并且不再是独占的,允许客户端重新连接。修复了 #359。
现在可以接受多种序列化格式的消息。添加了基于配置的机制以指定自定义序列化器。请参见 #535。
增强了环境变量替换,包括递归引用。请参见 #515。
版本 2.8.5¶
发布于 2018-03-15
针对 Kombu 的一个错误的解决方法,该错误导致新套接字有时会有较短的超时设置。 (#521)
版本 2.8.4¶
发布于 2018-02-18
修复了一个错误:当 AMQP 入口点运行时,如果与 RabbitMQ 的连接丢失,容器会崩溃 (#511)。
修正了 WorkerContext.immediate_call_id 的问题,该属性实际上指的是原始调用的 ID。新增 WorkerContext.origin_call_id 以复制之前的行为。
版本 2.8.3¶
发布于 2018-01-12
将 Eventlet 限制为 <0.22.0,直到我们与其兼容。
版本 2.8.2¶
发布于 2017-12-11
移除 pytest 插件中添加的 --log-level 参数,因为这与较新版本的 pytest (>= 3.3.0)冲突。对于旧版本,可以通过安装 pytest-catchlog 包来恢复此功能。
版本 2.8.1¶
发布于 2017-11-29
添加了 show-config 命令,该命令将在环境变量替换后将服务配置打印到控制台。
版本 2.8.0¶
发布于 2017-10-31
现在,替换到配置文件中的环境变量被解释为 YAML 而非简单值,从而允许使用丰富的数据类型。
版本 2.7.0¶
发布于 2017-10-07
在 register_provider() 中设置停止标志,以允许重用 PollingQueueConsumer 对象 [修复 #462]
将 AMQP 消息发布逻辑重构到 nameko.amqp.publish 中
向基于 AMQP 的 DependencyProviders 暴露投递选项和其他消息配置 [解决 #374]
Publisher、EventDispatcher 和 RPC MethodProxy 类的 use_confirms、retry 和 retry_policy 的类属性已被弃用。如果您之前是通过子类化这些类来设置这些选项,现在应在类实例化时设置它们。
版本 2.6.0¶
发布于 2017-04-30
环境变量现在被解释为原生 YAML 数据类型,而不仅仅是字符串。
WSGI 服务器现在使用显式日志记录器,因此可以通过日志配置进行控制。
删除了几个向后兼容的适配层,这些适配层仅在此版本之前维护。
版本 2.5.4¶
发布于 2017-04-20
不要在工作池上阻塞 QueueConsumer 线程,这可能导致服务死锁和偶尔掉线的 AMQP 连接 [修复 #428]。
将预取计数更改恢复为 2.5.3 版本,并在 QueueConsumer 线程外确认消息 [更稳健地修复 #417]。
版本 2.5.3¶
发布于 2017-03-16
将 amqp 的 prefetch_count 增加 1 到 max_workers + 1 以修复吞吐量问题。[修复 #417]
版本 2.5.2¶
发布于 2017-02-28
提高了 rabbit_config pytest fixture 的拆解速度
支持为独立的 RPC 代理提供替代的回复监听器
版本 2.5.1¶
发布于 2017-01-19
添加了一个 DependencyProvider,以便服务访问配置对象
内部重构使所有工作者生命周期步骤在同一线程中运行
版本 2.5.0¶
发布于 2016-12-20
默认启用所有 AMQP 消息发布者的发布确认
将常见的 AMQP 连接代码重构到 nameko.amqp 中
版本 2.4.4¶
发布于 2016-11-28
为消费者连接添加 AMQP 心跳
处理 Python 3 下由于快速断开连接的客户端引起的未捕获异常 [修复 #367]
版本 2.4.3¶
发布于 2016-11-16
将 kombu 锁定回兼容版本 (<4) [修复 #378]
修复与最新的 bpython 和 ipython shell 的兼容性 [修复 #355 和 #375]
修复 websocket hub 中的套接字清理错误 [修复 #367]
版本 2.4.2¶
发布于 2016-10-10
在 YAML 配置文件中添加对环境变量的支持
增强了
entrypoint_waiter()
。新的实现向后兼容,但另外:允许访问返回的结果(或引发的异常)
增加了等待特定结果的能力
在工作者完全拆解之前不会触发
版本 2.4.1¶
发布于 2016-09-14
增强了
WebServer
,增加了 get_wsgi_app 和 get_wsgi_server 方法,以便轻松使用 WSGI 中间件和修改 WSGI 服务器。增强了
replace_dependencies()
,允许使用命名参数提供特定的替换值。
版本 2.4.0¶
发布于 2016-08-30
为
standalone.rpc.ClusterProxy
添加字典访问,以允许代理调用名称不是 Python 中合法标识符的服务(例如,名称中有-
)。添加通过配置键指定自定义 ServiceContainer 类的能力。弃用 ServiceRunner 和 run_services 的关键字参数以达到相同目的。
弃用用于指定自定义 WorkerContext 类的 run_services、ServiceContainer 和 ServiceRunner.add_service 的关键字参数。自定义 WorkerContext 类现在只能通过定义 worker_ctx_cls 属性的自定义 ServiceContainer 类来指定。
移除 WorkerContext 的 context_keys 属性,该属性以前用于“白名单”从调用到调用传递的工作者上下文数据。该特性从特定实现泄漏到主框架中,其自身的实用性不足以继续得到支持。
重构 ServiceContainer 的内部结构,以更好地区分“管理”线程和“工作者”线程。在杀死线程时改进了日志记录。
版本 2.3.1¶
发布于 2016-05-11
弃用
MethodProxy.async
,转而使用MethodProxy.call_async
,为 async 成为关键字做准备添加从
config.yaml
加载日志配置的支持
版本 2.3.0¶
发布于 2016-04-05
添加通过
--config
选项在nameko shell
中加载配置文件的支持更改
HttpRequestHandler
以允许重写 web 异常的处理方式在与自定义
broadcast_identity
结合使用时启用广播事件的可靠传递。所有处理程序类型的可靠传递现在默认启用。除非您重写默认的 broadcast_identity,否则必须在广播模式下明确关闭。更新捆绑的 pytest fixture,默认情况下使用 RabbitMQ 中的随机虚拟主机
现在要求 eventlet>=0.16.1,因为旧版本已从 PyPI 中删除。
版本 2.2.0¶
发布于 2015-10-04
添加对 AMQP 消息中替代序列化器的支持
添加带有常见 fixture 的 pytest 插件
修正文档中的示例并添加测试以防止将来的故障
修复处理异常消息中非 ASCII 字符的错误
各种文档修正
版本 2.1.2¶
发布于 2015-05-26
重构独立队列消费者以增强可扩展性
版本 2.1.1¶
发布于 2015-05-11
Nameko shell 使用可用的 bpython 或 ipython 解释器
支持将入口点参数标记为敏感(以便后续删除)
版本 2.1.0¶
发布于 2015-04-13
更改默认 AMQP URI,以便示例在未配置 RabbitMQ 的情况下工作。
AMQP 连接错误的启发式消息。
将 six 添加到依赖项。
小幅文档修正。
版本 2.0.0¶
发布于 2015-03-31
兼容 Python 3
添加 HTTP 入口点和实验性 websocket 支持(由 Armin Ronacher 提供)
添加 CLI 和控制台脚本
引入 Nameko “扩展”及命名法的澄清
移除
DependencyFactory
,改为使用原型模式完整的文档重写
将
nameko.contrib.sqlalchemy
拆分为 nameko-sqlalchemy 作为**社区扩展**。将
nameko.legacy
包拆分为 nameko-nova-compat将独立 rpc 代理重命名为
ServiceRpcProxy
,并添加ClusterRpcProxy
,使用单个回复队列与多个远程服务进行通信。使独立事件调度器更加适合 Shell 使用,按需连接。
版本 1.14.0¶
发布于 2014-12-19
移除并行提供者,改为使用异步 RPC
更新
worker_factory()
以在请求替换不存在的注入时引发异常。添加各种
__repr__
方法以改善日志记录支持(非遗留)独立 RPC 代理中的超时
添加用于将 AMQP URI 操作为字典的辅助工具
版本 1.13.0¶
发布于 2014-12-02
RPC 回复队列现在自动删除。
在容器终止期间对行为不当的依赖项提供额外保护。
使遗留的
NovaRpcConsumer
更加健壮,以防NovaRpc
提供者发生故障。
版本 1.12.0¶
发布于 2014-11-25
添加通过 rpc 代理进行异步 rpc 调用的能力。
添加新的 Nameko 上下文键
user_agent
,以支持在 rpc 头中包含此类信息。
版本 1.11.5¶
发布于 2014-11-18
使独立 rpc 代理将其回复队列标记为自动删除,以防止在使用后仍然保留它们。
版本 1.11.4¶
发布于 2014-11-10
使
RpcConsumer
对Rpc
提供者中的故障更加健壮。添加新的异常
MalformedRequest
,RPC 提供者可以在检测到无效消息时引发。如果消息中缺少args
或kwargs
键,在默认的Rpc
提供者中引发此异常。修复针对非 localhost 代理的队列消费者测试中的问题。
升级到 eventlet 0.15.2。
将 pyrabbit 包含在
requirements.txt
中(不再仅用于测试)。在 entrypoint_hook 中捕获死亡容器以避免挂起。
向 rpc 入口点添加
expected_exceptions
关键字参数,以启用对用户与系统错误不同的异常处理(在依赖项中)。
版本 1.11.3¶
发布于 2014-10-10
为被
kill()
杀死的工作者添加更多日志记录。
版本 1.11.2¶
发布于 2014-09-18
为用于副作用而不是注入依赖项的依赖提供者添加
acquire_injection
的默认实现(返回None
)。
版本 1.11.1¶
发布于 2014-09-15
新的测试助手
entrypoint_waiter()
,用于等待入口点(例如事件处理程序)完成。
版本 1.11.0¶
发布于 2014-09-01
在 RPC 代理中引发特定的
RpcTimeout
错误,而不是socket.timeout
,以避免混淆 kombu 的Connection.ensure
。改进日志记录助手。
使用
inspect.getcallargs
而不是阴影 lambda 进行 RPC 参数检查。为所有发布者添加默认重试策略。
更严格地处理测试之间的连接。
针对 RabbitMQ 错误的解决方法,描述见 [RabbitMQ 用户组](https://groups.google.com/d/topic/rabbitmq-users/lrl0tYd1L38/discussion)。
版本 1.10.1¶
发布于 2014-08-27
在
worker_factory()
中检查服务类(而不是实例)。与描述符一起使用效果更佳。显式删除不需要的
exc_info
变量,以帮助垃圾回收器。
版本 1.10.0¶
发布于 2014-08-14
入口点提供者的 handle_result 现在能够操作、修改并返回
(result, exc_info)
元组。这使得默认后处理(例如序列化、翻译)成为可能。为遗留 RPC 入口点添加了序列化安全性。
版本 1.9.1¶
发布于 2014-08-12
修复了
nameko.legacy.dependencies
中的异常处理问题。
版本 1.9.0¶
发布于 2014-07-15
不再依赖 eventlet 来处理独立 RPC 代理的超时。
引入与“遗留”代理兼容的 RPC 入口点。
版本 1.8.2¶
发布于 2014-07-07
文档生成器接受一个函数,用于列出事件类,并相应地添加到输出中。
版本 1.8.1¶
发布于 2014-06-23
添加
wait_for_worker_idle
测试助手。
版本 1.8.0¶
发布于 2014-06-13
现在将
exc_info
元组而不是裸异常传递给worker_result
和handle_result
,以便在非工作线程中进行异常处理。
版本 1.7.2¶
发布于 2014-06-10
_run_worker()
现在在依赖项拆解之前调用任何handle_result
方法。序列化错误现在生成特定的错误信息,而不是冒泡到容器中。
对
nameko_doc
输出进行小幅修改。
版本 1.7.1¶
发布于 2014-05-20
添加了
language
、auth_token
和user_id
依赖提供者,以便将上下文数据提供给服务工作者。将常量重构到自己的模块中。
对测试进行了小幅修改,以便在共享 Rabbit 代理上进行测试。
版本 1.7.0¶
发布于 2014-05-07
spawn_worker()
现在会抛出ContainerBeingKilled
异常,如果正在进行kill
操作,因为某些提供者可能已经死亡。提供者应该捕获此异常,例如重新排队 RPC 消息。在完成杀死序列与剩余入口点触发之间存在竞争条件。
版本 1.6.1¶
发布于 2014-04-03
恢复对遗留异常序列化的更改,以维护与旧客户端的向后兼容性。
为希望将异常序列化为更多数据的未来客户端添加向前兼容性。
将 conftest 的 Rabbit 操作提升为测试助手。
版本 1.6.0¶
发布于 2014-03-31
将 instance_factory 重命名为 worker_factory。
如果 RPC 方法使用无效参数被调用,抛出
IncorrectSignature
,而不是RemoteError: TypeError
。如果调用不存在的 RPC 方法,抛出
MethodNotFound
,而不是RemoteError: MethodNotFound
。让日志处理程序格式化警告消息,以便聚合器正确分组。
将整个依赖提供者(而不仅仅是方法名称)暴露给工作者上下文。
版本 1.5.0¶
发布于 2014-03-27
版本 1.4.1¶
发布于 2014-03-26
添加了
nameko_doc
包,以简化服务导向文档的创建。
版本 1.4.0¶
发布于 2014-03-20
对不存在的服务(没有与 RPC 交换绑定的队列和相应的路由键)的 RPC 调用现在会引发异常,而不是无限期挂起。请注意,对已存在但未运行服务(队列存在但没有消费者)的调用行为与之前相同。
版本 1.3.5¶
发布于 2014-03-05
提高了测试的韧性。在 Rabbit 重置时强制关闭现有连接。
版本 1.3.4¶
发布于 2014-03-05
在测试工具中使用
MagicMock
进行依赖替换。在模拟时尽可能使用
autospec=True
。将
ServiceContainers
合并为单个类。
版本 1.3.3¶
发布于 2014-02-25
修复了在连接暂时丢失时重新连接到代理的错误。
版本 1.3.2¶
发布于 2014-02-13
删除值为
None
的头部,因为它们无法被 AMQP 序列化。
版本 1.3.1¶
发布于 2014-01-28
向
event_handler
入口点添加event_handler_cls
关键字参数,以使用EventHandler
提供者的自定义子类。
版本 1.3.0¶
发布于 2014-01-23
独立 RPC 代理接口更改为具有上下文管理器接口的类,并添加手动
start()
和stop()
方法。