在Python微服务环境中处理依赖关系

2024-06-12 03:42:27 发布

您现在位置:Python中文网/ 问答频道 /正文

背景:我想用Python编写大量的微服务(Django,Flask。。。现在不重要)供内联网使用。假设有一个认证服务,一个通知服务(电子邮件和/或互联网通讯器集成)和某种数据资源服务。 因此,用户通过auth(例如get的JWT)然后点击数据服务来更改某些内容。该更改将触发对通知服务的调用以发送通知。
问题从如何处理开始,我是否应该考虑为我的服务提供一种客户? 我现在的想法是制作Python包,或者简单地使用git子模块来处理,比如:
拥有和端点data.service.local/api/v1/food我想(我想)制作一个“提供者”,让我能够以一种简单的方式使用该端点:

class DataServiceProvider(object):

    BASE_URL = settings.DATA_SERVICE_URL

    def create_food(self, name):
        return requests.post(BASE_URL + 'food', {'name': name})

我还要麻烦吗?我的目标是让我的其他服务打这个(特别是通知一个),所以我想我应该。但是在哪里存储这些提供者呢?在另一个名为{service_name}-client的存储库中,并在需要使用它的任何其他服务中使用该包?在

谢谢你的建议。非常感谢。在


Tags: 数据djangonameurlflaskbasefood电子邮件
1条回答
网友
1楼 · 发布于 2024-06-12 03:42:27

经过一番尝试和失败之后,我决定同时使用git子模块和python包。目录树如下所示:

main (repo)
├── auth (repo)
│   ├── auth-cleint (repo)
│   │   └── setup.py
│   └── requirements (contains an editable entry to ./auth-client)
├── notify (repo)
│   ├── notify-client (repo)
│   │   └── setup.py
│   └── requirements (-e ./notify-client and git+auth-client)
├── docker-compose.yml
└── data (repo)
    └── requirements (git+notify-client and git+auth-client)

auth、notify、data是独立的git存储库,作为主repo下的子模块链接。在他们的服务Django项目中的客户也是如此。我以可编辑模式在其服务中安装客户机,以使我的开发更容易。一旦我开始登台/制作,我将使用git+链接。在

如果有人有兴趣深入研究的话,在这里https://github.com/PyPila/amok(不是一个商业项目-用来学习的)中可以使用。在

现在有一个提示,在使用pip时,我必须使用一个不推荐使用的 process-dependency-links标志,因为我的客户机包依赖于其他一些私有包。pip维护人员将该标志设置为已弃用,但它将一直保留到他们发现如何解决这些“深层依赖”之前。在

相关问题 更多 >