python构建基于服务的架构

news/2025/1/9 14:38:13/文章来源:https://www.cnblogs.com/huzhongqiang/p/18661808

我希望的基于服务的架构特征:

  • 可以在任何地方以方便的方式调用服务. 例如:
from services import service
service.sHelpler.run()
  • 服务之间可以互相调用. 比如服务A可以调用服务B的某个功能, 反之亦然.
  • 服务支持单例模式和多例模式
  • 支持服务的序列化
    之前有一篇博文python利用依赖注入实现模块解耦, 可以帮助实现这个架构.
    但是稍显复杂, 需要传入字符串形式的模块路径和类名.

替代方案

可以采用比较直接的方式, 把所有的服务对象集中到一个模块中, 如下所示:

from services.a import A
from services.b import Bclass Services:def __init__(self):self.sA = A()self.sB = B()@propertydef mA(self)->A:return A()@propertydef mB(self)->B:return B()service = Services()

然后, 在另一个模块中, 按需加载即可, 如下所示:

def service():from services.services import servicereturn service

对于用户, 就可以使用这些服务了:

from xxx import service
service().sA.test()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/866561.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从极端环境的应用中解析强固型工控机与工业工控机的差异性

一、强固型工控机:设计原理与应用 强固型工控机(Rugged Industrial PC)是专门为了在极端和恶劣环境中稳定运行而设计的电脑设备。这些环境通常包括高强度振动、极端温度、高湿度以及多粉尘等不利条件,为了应对这些挑战,强固型工控机在设计之初就充分考虑这些严苛的环境因素…

公司台式机安转后无网络

网络连接 2025年1月9日 安装台式机,没有网卡,插办工作下有四根网线,我这台在用其中一个,新电脑试了剩下的三条,都不行,今天萧师傅讲了方法,让我试一下,“线都试一下”,解决了来记录一下。先把水晶头插入电脑,看哪个电脑能识别(要等一下,正在识别也是一个球),多试…

VA35计划协议清单增强

1、需求说明 本文档在VA35计划协议清单中加入了VBEP-RRQQTY_BU和VBEP-CRQQTY_BU两个字段, 实现的效果如下:2、实现过程 2.1、调试过程 鉴于这就是个普通的查询展示报表,所以先对VA35的源代码做了断点调试,很容易就找到了要展示的表为POSTAB断点调试找到表内容发生变化的位置…

IBM Storage - 支持AI应用场景的数据存储软硬件解决方案

为了解决数据和工作负载在各地分散的现状,需要实现对存储在分布式文件和对象存储系统中的大量非结构化数据的高速访问。IBM Storage利用人工智能(AI)、机器学习(ML)和高级分析手段,对数据存储基础架构进行现代化改造。概述为了解决数据和工作负载在各地分散的现状,需要实现对…

2025年度最佳开源免费项目管理软件:8款精选工具解析【全方位大合集】

项目管理对于企业和团队的成功至关重要。无论是大型企业还是小型创业团队,都需要高效的项目管理工具来提升工作效率、优化资源分配和确保项目按时交付。今天,我们将为大家介绍8款开源免费的项目管理软件,帮助您在众多选择中找到最适合自己团队的工具。这8款工具分别是禅道、…

『玩转Streamlit』--集成定时任务

学习了Streamlit了之后,可以尝试给自己的命令行小工具加一个简单的界面。 本篇总结了我改造自己的数据采集的工具时的一些经验。 1. 概要 与常规的程序相比,数据采集任务的特点很明显,比如它一般都是I/O密集型程序,涉及大量网络请求或文件读写,耗费的时间比较长;而且往往…

VUE +WebSocket+speak-tt 实现在浏览器右下角实时给商家推送订单消息

先看效果 1、WebSocket服务建立1.1 引入包<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency>1.2 新建配置类package com.ruoyi.web.core.config;import org.…

ASE65R180-ASEMI超洁MOS管ASE65R180

ASE65R180-ASEMI超洁MOS管ASE65R180编辑:ll ASE65R180-ASEMI超洁MOS管ASE65R180 型号:ASE100N10 品牌:ASEMI 封装:TO-220F 批号:最新 最大漏源电流:21A 漏源击穿电压:650V RDS(ON)Max:180mΩ 引脚数量:3 芯片个数: 沟道类型:P沟道MOS管、超洁MOS管 漏电流:ua 特性…

【搜索】DFS与BFS

99. 岛屿数量讲解:https://programmercarl.com/kamacoder/0099.岛屿的数量广搜.html#思路 DFS代码 #include <iostream> #include <cstring>using namespace std;const int N = 55;int n, m; int g[N][N]; bool st[N][N]; int dx[4] = {-1, 0, 1, 0}, dy[4] = {0,…

DFS与BFS专题

99. 岛屿数量讲解:https://programmercarl.com/kamacoder/0099.岛屿的数量广搜.html#思路 DFS代码 #include <iostream> #include <cstring>using namespace std;const int N = 55;int n, m; int g[N][N]; bool st[N][N]; int dx[4] = {-1, 0, 1, 0}, dy[4] = {0,…

Spinnaker

Spinnaker 是一个持续交付平台,它定位于将产品快速且持续的部署到多种云平台上。 Spinnaker 主要特性:配置一次,随时运行;随地部署,集中化管理;开源。 Spinnaker 组件:Spinnaker 最初是以实现内部的端到端持续交付为目标,作为 Asgard 的替代,该项目期望重建一个持续交…

Java基础学习(五)

Java基础学习(五):数组 目录Java基础学习(五):数组概念声明与创建初始化基本特点内存分析应用多维数组扩展内容Arrays 类冒泡排序稀疏数组 本文为个人学习记录,内容学习自 狂神说Java概念数组是相同类型数据的有序集合 每个数据称为一个数组元素,可以通过下标来访问声明…