最近接手一项工作,管理某些 python 脚本,脚本越来越复杂,很难管理,想要优化下
脚本技术上很简单,大多是离线的批处理程序,诸如:
这些脚本大多数依赖手动执行,少部分是定时任务执行
通常每个 module 里都有 main 函数,直接执行 main
1
NoOneNoBody 2023-03-19 01:35:45 +08:00 1
分两种情况
1.跨项目的公共代码打包成 package 这个多留参数,变化宽松一些 2.仅单一项目的公共代码,打包成一个公共目录或定点子目录 这个如果前述 1.已经存在,但某些参数固定,可以写成一个闭包,或者继承并固定参数为新的类,供项目引入 |
2
ClericPy 2023-03-19 07:42:52 +08:00 1
1. 定时启动和手动调用, 以及分别查看运行记录和日志
1.1 airflow, azkaban, systemd 1.2 比较次的情况, APS Scheduler, sched, supervisor+plan 1.3 不推荐 crontab 2. 共享模块问题 2.1 微服务(HTTP/RPC) 最能做好一致性和统一升级以及审计等能力 2.2 云原生 Serverless 之类也不错, 打通 gateway 或者其他 invoke 方式也行 2.3 私有 pypi 或者私有 git 用 pip 安装 2.4 通过挂共享盘路径方式存放共享模块, 可以用统一的 venv, 也可以 sys.path 的方式, 包括 pip install -t /share_path/xxx 的方式带上依赖 3. 解决上面脚本地狱的正经办法还是重构, 看成本是否能够接受吧 3.1 领域驱动设计, 从头划分边界与共性 3.2 服务化改造, 只通过 HTTP 或其他远程调用的方案, 起码把手动启动的改成远程调用 3.3 调度模块按 1 里面的改造成所见即所得的模块, 而各种配置信息用专业的配置中心服务不要硬编码 |