问题标签 [nameko]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 如何将 nameko 依赖项传递给 SqlAlchemy 事件处理程序?
我正在编写一个小型 RPC 服务,它允许使用 nameko 和 sqlalchemy 对数据库进行远程 CRUD。对于某些方法/属性/事件处理程序,我的模型需要使用依赖项获取一些数据。我希望它的工作方式,每当我在模型实例的生命周期中第一次调用这些方法之一时,数据就会被获取并缓存在模型上。之后,需要外部数据的方法将只使用缓存版本。
我在设计这个时遇到了一些麻烦。将依赖项作为函数参数传递仅适用于模型方法。属性不允许传递参数,并且我不控制 SQL Alchemy 的事件处理程序的调用方式,因此我不能在那里注入任何依赖项。我发现完成这项工作的唯一方法是在其生命周期的早期将依赖项绑定到模型实例,但我觉得这违反了 DI 模式。
模型.py
服务.py
我的解决方案之一是在会话创建时将依赖提供者返回的实例绑定RemoteDataService
到自定义数据库会话,然后让模型上的依赖属性看起来像这样:
这解决了我的问题,但它似乎不太符合 DI。此外,它仅适用于已经绑定到会话的模型,但在我的具体情况下,我可以接受。话虽如此,如果有一个,我会采取更好的解决方案。
我在 DI/nameko/sqla 领域中尝试做的事情本质上是错误的吗?模型不应该直接处理依赖关系吗?无论哪种方式,如何协调使用 SQLalchemy 的事件处理程序(一种典型的情况,您几乎无法控制函数调用)、DI 以及在所述处理程序中使用依赖项的需要?
python - 测试 nameko 基本示例时出现 BlockingIOError
在尝试有关 python 框架 nameko 的非常基本的示例时,我收到如下错误:BlockingIOError: [WinError 10035] A non-blocking socket operation could not be completed immediately
知道它来自哪里吗?
我正在使用 python 3.7.0,最新版本的 nameko 和 rabbitMQ 3.7.10
这是我要测试的源代码(!)
在这里我们得到的错误:
python - 如何同时使用 asyncio 模块调用 nameko 服务
我写了一个这样的异步程序。一个永远的运行循环同时启动 4 个事件。每个事件都会运行该rpc
服务。在nameko
服务中,我使用time.sleep(10)
.
我很困惑为什么服务每秒钟就完成一次10
。我认为服务应该同时完成。我怎样才能让工作同时完成?
nameko
rpc
服务是:
输出如下:</p>
python - python中的流架构后端
我目前正在尝试将程序从单体架构重构为微服务架构,但我不确定如何进行:
该程序的目标是直截了当的,它接收原始数据(字节),将其拆分并将其转换为有意义的内容并将其附加回原始消息,以进行某种丰富。例如:
我将根据值大小添加需要不同的应用程序(不同的路由)。
这可以分为几层分裂和丰富。到目前为止,一切都发生在一个解决方案中,而且规模庞大且难以维护。所以我决定转向微服务架构。我从 Nameko 开始,它内置了对 rabbitmq 的支持,但过了一段时间我注意到了,我只使用@handle_event
装饰器和调度程序来发布事件,而不是@rpc
装饰器。
所以我有3个问题:
- 你认为微服务架构是最好的方式吗?因为我填充了更少的请求接收和更多的发布订阅流程,所以一个应用程序操作数据,然后将其发送到另一个相同剂量的应用程序。
- 在不浪费时间使用 Rabbitmq 的情况下实现这一目标的最佳实践和库是什么?
- 使用rabbitmq处理复杂(不仅仅是主题路由)路由的最佳方法是什么?
postgresql - postgresql容器的数据保存在哪里,还有容器的位置在哪里?
我正在使用来自 GitHub https://github.com/nameko/nameko-examples的 nameko, 并将此应用程序部署在 docker 上。一旦我停止容器,所有数据都会丢失,我也无法找到容器的位置。我想将每个数据库日期存储在我的本地计算机上。
python - 如何自动生成nameko微服务的rpc接口文档?
我看到一些关于 nameko RESTful 微服务 + swagger的例子,它们可以生成惊人的接口文档。但是,就我而言,我只使用 RPC 而不是 HTTP。是否有任何类似 swagger 的库来记录 RPC 接口?
python-3.x - 如何在 nameko rpc 中通信二进制数据?
似乎 json 是 .json 中序列化数据的默认方式nameko rpc
。如果我打电话rpc.my_service.send(b'\x01\')
,它会引发异常kombu.exceptions.EncodeError: Object of type 'bytes' is not JSON serializable
有没有办法在 nameko rpc 中发送二进制数据?例如,pickle
。请给我一个简短的例子吗?先感谢您。
python - 如何在 Nameko 的依赖提供程序中使用 Config?
我们Nameko
可以使用Config
依赖提供程序从 yaml 文件中读取配置:
我MongoDB
在配置旁边创建了一个新的依赖提供程序:
我遇到的问题是我无法访问此处的配置。我应该如何访问配置MongoDB
?
nameko - 实现(抽象)Nameko 服务继承
我有一个处理大量实体的 nameko 服务,并且将入口点放在单个service.py
模块中会使该模块高度不可读且难以维护。
所以我决定将模块拆分为多个服务,然后用于扩展主服务。我有点担心依赖注入,并认为像 db 这样的依赖可能由于这种方法而有多个实例。这是我到目前为止所拥有的:
具有所有与客户相关的端点的客户服务模块
和从客户服务继承的主要服务模块,可能还有其他抽象服务
最后我运行它:
所以这很好用,但方法对吗?特别是关于依赖注入?