python: Timing Functions Pattern

项目结构:

一个珠宝企业业务系统性能监控的实现方案。通过Python装饰器模式设计计时函数(timing_decorator),自动记录各业务模块执行耗时,并支持慢任务告警(阈值1秒)。系统包含供应链、设计、生产、质检、物流、财务、营销、销售、人事、IT等10个业务模块,采用统一日志配置,记录执行时间到business_perf.log文件。当业务函数执行超过阈值时输出警告日志,有效监控珠宝产销全流程性能。该方案实现无侵入式性能分析,适用于企业级业务系统监控场景,帮助识别优化慢业务环节。

# encoding: utf-8
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Timing Functions Pattern 计时函数模式
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : PyCharm 2024.3.6 python 3.11
# os        : windows 10
# database  : mysql 9.0 sql server 2019, postgreSQL 17.0  Oracle 21c Neo4j
# Datetime  : 2026/7/3 20:55
# User      :  geovindu
# Product   : PyCharm
# Project   : pydesginpattern
# File      : settings.py
import os
 
# 日志配置
LOG_LEVEL = "INFO"
LOG_FORMAT = "%(asctime)s - %(levelname)s - %(message)s"
LOG_DATE_FMT = "%Y-%m-%d %H:%M:%S"
LOG_SAVE_PATH = os.path.join(os.getcwd(), "logs")
 
# 性能监控配置
PERF_LOG_PREFIX = "【珠宝性能监控】"
PERF_TIME_THRESHOLD = 1.0  # 超过1秒标记慢查询/慢业务
 
 
# encoding: utf-8
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Timing Functions Pattern 计时函数模式
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : PyCharm 2024.3.6 python 3.11
# os        : windows 10
# database  : mysql 9.0 sql server 2019, postgreSQL 17.0  Oracle 21c Neo4j
# Datetime  : 2026/7/3 20:53
# User      :  geovindu
# Product   : PyCharm
# Project   : pydesginpattern
# File      : logger.py
import logging
import os
from TimingFunctionsPattern.config.settings import LOG_LEVEL, LOG_FORMAT, LOG_DATE_FMT, LOG_SAVE_PATH
 
def init_global_logger():
    """
    全局日志初始化,统一日志输出规则"
    :return:
    """
    # 创建日志目录
    if not os.path.exists(LOG_SAVE_PATH):
        os.makedirs(LOG_SAVE_PATH)
 
    logging.basicConfig(
        level=getattr(logging, LOG_LEVEL),
        format=LOG_FORMAT,
        datefmt=LOG_DATE_FMT,
        handlers=[
            logging.FileHandler(os.path.join(LOG_SAVE_PATH, "business_perf.log"), encoding="utf-8"),
            logging.StreamHandler()
        ]
    )
    return logging.getLogger("jewelry_global_logger")
 
# 全局日志实例
logger = init_global_logger()
 
 
# encoding: utf-8
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Timing Functions Pattern 计时函数模式
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : PyCharm 2024.3.6 python 3.11
# os        : windows 10
# database  : mysql 9.0 sql server 2019, postgreSQL 17.0  Oracle 21c Neo4j
# Datetime  : 2026/7/3 20:57
# User      :  geovindu
# Product   : PyCharm
# Project   : pydesginpattern
# File      : timing_profiler.py
import time
import functools
from TimingFunctionsPattern.core.logger import logger
from TimingFunctionsPattern.config.settings import PERF_LOG_PREFIX, PERF_TIME_THRESHOLD
 
def timing_decorator(func):
    """
    Profiling Pattern - Timing Functions 标准实现
    无侵入式包装任意函数,自动记录执行耗时,支持慢任务告警
    """
    @functools.wraps(func)
    def wrapper(*args, **kwargs):
        start = time.perf_counter()
        try:
            result = func(*args, **kwargs)
        finally:
            end = time.perf_counter()
            cost = round(end - start, 4)
            msg = f"{PERF_LOG_PREFIX} 业务函数[{func.__name__}] 执行耗时: {cost} 秒"
            # 区分普通日志 / 慢任务警告
            if cost >= PERF_TIME_THRESHOLD:
                logger.warning(f"{msg} 【慢任务告警】耗时超过阈值{PERF_TIME_THRESHOLD}s")
            else:
                logger.info(msg)
        return result
    return wrapper



# encoding: utf-8
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Timing Functions Pattern 计时函数模式
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : PyCharm 2024.3.6 python 3.11
# os        : windows 10
# database  : mysql 9.0 sql server 2019, postgreSQL 17.0  Oracle 21c Neo4j
# Datetime  : 2026/7/3 20:59
# User      :  geovindu
# Product   : PyCharm
# Project   : pydesginpattern
# File      : supply.py
import time
from TimingFunctionsPattern.core.timing_profiler import timing_decorator
 
@timing_decorator
def material_purchase_check():
    """
    上游供应链:黄金、钻石、宝石采购入库、品级真伪核验
    :return:
    """
    time.sleep(1.2)
    print("✅ 原料采购核验完成:黄金99.99纯度、钻石4C质检达标,入库登记")
 
 
 
# encoding: utf-8
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Timing Functions Pattern 计时函数模式
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : PyCharm 2024.3.6 python 3.11
# os        : windows 10
# database  : mysql 9.0 sql server 2019, postgreSQL 17.0  Oracle 21c Neo4j
# Datetime  : 2026/7/3 21:00
# User      :  geovindu
# Product   : PyCharm
# Project   : pydesginpattern
# File      : design.py
import time
from TimingFunctionsPattern.core.timing_profiler import timing_decorator
 
@timing_decorator
def jewelry_draft():
    """
    设计部:首饰3D建模、手绘图纸、生产工艺图输出
    :return:
    """
    time.sleep(0.8)
    print("✅ 设计制图完成:新款首饰3D模型渲染完毕,图纸下发车间")
 
 
 
# encoding: utf-8
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Timing Functions Pattern 计时函数模式
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : PyCharm 2024.3.6 python 3.11
# os        : windows 10
# database  : mysql 9.0 sql server 2019, postgreSQL 17.0  Oracle 21c Neo4j
# Datetime  : 2026/7/3 21:01
# User      :  geovindu
# Product   : PyCharm
# Project   : pydesginpattern
# File      : production.py
import time
from TimingFunctionsPattern.core.timing_profiler import timing_decorator
 
@timing_decorator
def produce_jewelry():
    """
    生产车间:切割、镶嵌、抛光、成型加工
    :return:
    """
    time.sleep(2.5)
    print("✅ 加工生产完成:首饰毛坯镶嵌抛光完成,转入质检")
 
@timing_decorator
def quality_inspect():
    """
    成品质检:工艺瑕疵、贵金属称重、合规检测
    :return:
    """
    time.sleep(0.6)
    print("✅ 质检完成:无工艺缺陷,出具质检合格证书")
 
@timing_decorator
def product_pack():
    """
    成品包装:礼盒、防伪标签、产品证书封装
    :return:
    """
    time.sleep(0.3)
    print("✅ 包装完成:高端礼盒封装,绑定唯一防伪码")
 
 
# encoding: utf-8
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Timing Functions Pattern 计时函数模式
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : PyCharm 2024.3.6 python 3.11
# os        : windows 10
# database  : mysql 9.0 sql server 2019, postgreSQL 17.0  Oracle 21c Neo4j
# Datetime  : 2026/7/3 21:02
# User      :  geovindu
# Product   : PyCharm
# Project   : pydesginpattern
# File      : logistics.py
import time
from TimingFunctionsPattern.core.timing_profiler import timing_decorator
 
@timing_decorator
def goods_delivery():
    """
    物流仓储:保价出库、物流面单、运输跟踪
    :return:
    """
    time.sleep(1.0)
    print("✅ 物流完成:首饰保价出库,物流单号已同步系统")
 
 
 
# encoding: utf-8
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Timing Functions Pattern 计时函数模式
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : PyCharm 2024.3.6 python 3.11
# os        : windows 10
# database  : mysql 9.0 sql server 2019, postgreSQL 17.0  Oracle 21c Neo4j
# Datetime  : 2026/7/3 21:03
# User      :  geovindu
# Product   : PyCharm
# Project   : pydesginpattern
# File      : finance.py
import time
from TimingFunctionsPattern.core.timing_profiler import timing_decorator
 
@timing_decorator
def finance_calc_stat():
    """
    财务部:原料成本核算、订单营收、发票、月度报表
    :return:
    """
    time.sleep(1.8)
    print("✅ 财务核算完成:生产成本与销售营收统计报表生成")
 
 
 
# encoding: utf-8
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Timing Functions Pattern 计时函数模式
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : PyCharm 2024.3.6 python 3.11
# os        : windows 10
# database  : mysql 9.0 sql server 2019, postgreSQL 17.0  Oracle 21c Neo4j
# Datetime  : 2026/7/3 21:05
# User      :  geovindu
# Product   : PyCharm
# Project   : pydesginpattern
# File      : marketing.py
import time
from TimingFunctionsPattern.core.timing_profiler import timing_decorator
 
@timing_decorator
def marketing_promotion():
    """
    市场部:线上投放、线下展会、品牌活动策划
    :return:
    """
    time.sleep(1.5)
    print("✅ 营销推广完成:节日活动方案落地,广告投放上线")
 
 
# encoding: utf-8
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Timing Functions Pattern 计时函数模式
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : PyCharm 2024.3.6 python 3.11
# os        : windows 10
# database  : mysql 9.0 sql server 2019, postgreSQL 17.0  Oracle 21c Neo4j
# Datetime  : 2026/7/3 21:05
# User      :  geovindu
# Product   : PyCharm
# Project   : pydesginpattern
# File      : sales.py
import time
from TimingFunctionsPattern.core.timing_profiler import timing_decorator
 
@timing_decorator
def sales_customer_service():
    """
    销售业务:客户洽谈、订单录入、售后维修、渠道合作
    :return:
    """
    time.sleep(0.9)
    print("✅ 销售业务完成:客户订单确认,售后工单归档")
 
 
 
# encoding: utf-8
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Timing Functions Pattern 计时函数模式
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : PyCharm 2024.3.6 python 3.11
# os        : windows 10
# database  : mysql 9.0 sql server 2019, postgreSQL 17.0  Oracle 21c Neo4j
# Datetime  : 2026/7/3 21:06
# User      :  geovindu
# Product   : PyCharm
# Project   : pydesginpattern
# File      : hr_admin.py
import time
from TimingFunctionsPattern.core.timing_profiler import timing_decorator
 
@timing_decorator
def hr_admin_work():
    """
    人事行政:考勤、招聘、办公用品、制度管理
    :return:
    """
    time.sleep(0.7)
    print("✅ 人事行政完成:月度考勤统计,行政物资盘点")
 
 
# encoding: utf-8
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Timing Functions Pattern 计时函数模式
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : PyCharm 2024.3.6 python 3.11
# os        : windows 10
# database  : mysql 9.0 sql server 2019, postgreSQL 17.0  Oracle 21c Neo4j
# Datetime  : 2026/7/3 21:07
# User      :  geovindu
# Product   : PyCharm
# Project   : pydesginpattern
# File      : it_ops.py
import time
from TimingFunctionsPattern.core.timing_profiler import timing_decorator
 
@timing_decorator
def it_system_ops():
    """
    IT运维:业务系统巡检、数据备份、网络安全、版本更新
    :return:
    """
    time.sleep(1.1)
    print("✅ IT运维完成:全业务数据库备份,服务器巡检正常")



# encoding: utf-8
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Timing Functions Pattern 计时函数模式
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : PyCharm 2024.3.6 python 3.11
# os        : windows 10
# database  : mysql 9.0 sql server 2019, postgreSQL 17.0  Oracle 21c Neo4j
# Datetime  : 2026/7/3 21:09
# User      :  geovindu
# Product   : PyCharm
# Project   : pydesginpattern
# File      : business_flow_service.py
from TimingFunctionsPattern.business import (
    material_purchase_check,
    jewelry_draft,
    produce_jewelry,
    quality_inspect,
    product_pack,
    goods_delivery,
    finance_calc_stat,
    marketing_promotion,
    sales_customer_service,
    hr_admin_work,
    it_system_ops
)
 
class JewelryBusinessFlowService:
    """
    珠宝全业务流程编排服务
    职责:按真实行业顺序串联全链路业务,对外统一提供流程入口
    """
    def run_full_production_flow(self):
        """完整产销全链路:原料→设计→生产→质检→包装→物流"""
        print("======= 启动珠宝产销主流程 =======\n")
        material_purchase_check()
        jewelry_draft()
        produce_jewelry()
        quality_inspect()
        product_pack()
        goods_delivery()
        print("\n======= 产销主流程执行结束 =======\n")
 
    def run_backend_support_flow(self):
        """后台支撑流程:财务、营销、销售、人事、IT"""
        print("======= 启动后台职能支撑流程 =======\n")
        finance_calc_stat()
        marketing_promotion()
        sales_customer_service()
        hr_admin_work()
        it_system_ops()
        print("\n======= 后台支撑流程执行结束 =======\n")
 
    def run_all_business(self):
        """一次性执行全公司所有业务模块"""
        self.run_full_production_flow()
        self.run_backend_support_flow()
  


调用:

# encoding: utf-8
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Timing Functions Pattern 计时函数模式
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : PyCharm 2024.3.6 python 3.11
# os        : windows 10
# database  : mysql 9.0 sql server 2019, postgreSQL 17.0  Oracle 21c Neo4j
# Datetime  : 2026/7/3 21:11
# User      :  geovindu
# Product   : PyCharm
# Project   : pydesginpattern
# File      : TimingFunctionsBll.py
 
from TimingFunctionsPattern.service import JewelryBusinessFlowService
from TimingFunctionsPattern.core.logger import logger
 
class TimingFunctionsBll(object):
    """
 
    """
    def demo(self):
        """
 
        :return:
        """
        logger.info("===== 珠宝企业性能监控系统启动 =====")
        flow_service = JewelryBusinessFlowService()
        # 执行全业务流程
        flow_service.run_all_business()
        logger.info("===== 所有业务流程执行完毕 =====")


输出:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值