Python Nameko 多个项目(开发)

Python Nameko multiple projects (development)

我们在项目设置中将 Flask 和 nameko 与 RabbitMQ 一起使用。我们将它用于多个项目(我们 2 个月前开始),并且我们在开发时遇到服务名称问题。

我们有两个项目——A和B,它们都有UserService(功能不同):

class UserService:
    name = 'user_service'
    ...

问题是当我们需要 运行 同一台机器上的两个项目时,一个用户服务无法正常工作。确切地说,两者都在工作,但所有请求都由其中之一处理,并且由于它们的结构不同,我们得到了错误。

第一个想法是在服务名称中添加项目前缀,例如 A_user_service,但这是一个非常丑陋的解决方案(在 rpc 部分我们需要调用 rpc.A_user_service那太可怕了)。 nameko 项目是否有任何类型的名称空间?我们已尝试将配置中的 rpc_excange 参数设置为每个项目都不同,但这并不能解决我们遇到的问题。

我想这在某种程度上取决于您如何定义 "project"。服务名称是主要命名空间,因此如果这两个用户服务有可能共存,它们应该使用不同的(也许更具体)服务名称。

如果它们是完全独立的(例如为两个独立的客户端开发),那么也许使用单独的 rabbitmq vhosts 可以解决您的问题?这样你最终会 运行 宁两个单独的 "clusters" 服务,其中虚拟主机 a 中的任何内容都不能看到或与虚拟主机 b 中的任何内容交谈(当然你可以 运行 服务实例x 如果需要,例如对于在两个客户端 sites/networks)

上 运行ning 的服务