发行说明

在这里,你可以查看 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_confirmsretryretry_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_appget_wsgi_server 方法,以便轻松使用 WSGI 中间件和修改 WSGI 服务器。

  • 增强了 replace_dependencies() ,允许使用命名参数提供特定的替换值。

版本 2.4.0

发布于 2016-08-30

  • standalone.rpc.ClusterProxy 添加字典访问,以允许代理调用名称不是 Python 中合法标识符的服务(例如,名称中有 -)。

  • 添加通过配置键指定自定义 ServiceContainer 类的能力。弃用 ServiceRunnerrun_services 的关键字参数以达到相同目的。

  • 弃用用于指定自定义 WorkerContext 类的 run_servicesServiceContainerServiceRunner.add_service 的关键字参数。自定义 WorkerContext 类现在只能通过定义 worker_ctx_cls 属性的自定义 ServiceContainer 类来指定。

  • 移除 WorkerContextcontext_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

  • 使 RpcConsumerRpc 提供者中的故障更加健壮。

  • 添加新的异常 MalformedRequest,RPC 提供者可以在检测到无效消息时引发。如果消息中缺少 argskwargs 键,在默认的 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_resulthandle_result,以便在非工作线程中进行异常处理。

版本 1.7.2

发布于 2014-06-10

  • _run_worker() 现在在依赖项拆解之前调用任何 handle_result 方法。

  • 序列化错误现在生成特定的错误信息,而不是冒泡到容器中。

  • nameko_doc 输出进行小幅修改。

版本 1.7.1

发布于 2014-05-20

  • 添加了 languageauth_tokenuser_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

  • kill() 的改进,使其能够提供更好的回溯和更清晰的拆解:

    • 使用 sys.exc_info 来保留回溯信息。

    • 不再将异常传递给 kill(),消除竞争条件。

    • 不再要求在 kill() 中传递 exc

版本 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() 方法。