tzf 及相关项目的基础开发工作基本稳定了,在之前的文章零星有些开发和设计过程的资料:
- 2022-05-29, 在 Go 中将经纬度转时区
- 2022-08-01, Python 中经纬度转时区新的选择
- 2022-08-27, 用 Go 编写 Python 扩展
- 2022-09-10, tzf 预览图制作
- 2022-11-24, tzfpy Rust 重写
这一篇是最终的总结,从项目的启动到逐步优化和演进的过程。
tzf 及相关项目的基础开发工作基本稳定了,在之前的文章零星有些开发和设计过程的资料:
这一篇是最终的总结,从项目的启动到逐步优化和演进的过程。
Protocol Buffers 生成的 Python 代码是一坨人类无法阅读的代码, 近日才发现 Google
增加了一个参数 --pyi_out=./xxx
就可以生成 Python 的 typing 了。
tzfpy 是 tzf 的 Python
binding。 如果只是本地可用,Go 代码加上 CGO 扩展编译成 .so
文件就能用了。
不过要做成发布到 PyPI 上在其他地方能直接安装的 wheel 是有些曲折的,看 CI
失败的记录就挺明显的。
距离决定用 FastAPI 重写 Flask 应用已经过去了一年了, 年中的时候在 FastAPI 上尝试了很多性能优化方案,但机器的负载水平已经快到头了, 只能承认这条路走不通,需要换一个快得多语言来做。 决定用 Go 再重写,又经历了若干次的优化,目前已经稳定运行。 线上峰值 QPS 接近 10K,应用内统计延迟在 2ms 之内,依赖服务统计延迟在 13ms 左右。 记录下若干有意思的事情。
在 2019 年夏天,我们将两个 Python 包
ujson 和
rb 做了些调整与更新,以适合 Python3.6+
环境下的运行。发现 PyPI
的发布比较繁琐,当时试图做些自动化的工作,但是没找到方向,就先搁置了。后来在一次的小版本发布时出现了
GitHub Release 的 tag 和 PyPI 最新版的 tag 不一致的情况
caiyunapp/ultrajson#8
。
在 Python3.7 环境下,Uber 开源的 PyFlame 无法使用,而在容器环境中,py-spy 又有诡异的问题。考量各种「采样」工具后,发现只有内置的 cProfile 才是稳定、可靠的。