

Python开发实践经验
source link: https://jiajunhuang.com/articles/2017_11_04-python_develop_practice.md.html?
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Python开发实践经验
这是我在公司项目中写下的约定, 该项目使用Python3开发, 分享出来, 希望对大家也会有一些帮助
项目杜绝循环引用, 包之间的引用关系为(
->
表示被引用)models -> controllers -> application ^ ^ \ / \ utils service
包内相对引用,包外绝对引用
controllers
,models
,utils
都是package
,使用__all__
来管控其下面的成员, 所有代码使用如下方式导入:from itachi.models import Base
而不是from itachi.models.base import Base
单元测试除外, 单元测试可能需要mock包内成员, 所以可能需要跳过
__all__
的限制每个单元测试用例必须自己清理自己创建的数据
单元测试必须继承
tests/base.py -> BaseCase
, 使用prehook
和posthook
替代setUp
和tearDown
, 因为base中处理的app的context顺序会影响单元测试(因为这个项目用的是flask,所以这一点比较蛋疼)每次修改完数据库,必须显示commit
session.commit()
禁止使用
lazy import
这种方式来规避循环引用,正确的方式是合理的规划代码组织, 参见第一条推送使用接口来定义, 见
itachi/services/push/base.py
, 由于python没有明确声明接口的方式, 所以还请人为遵守异步任务task应当是可重入的, 会配置为重试
显示优于隐式, 所以不要用各种trick
requirements.txt
和requirements-dev.txt
分别对应正式和开发环境的依赖, 其中后者仅包含前者的增量部分严禁for循环查数据库,请使用连表代替,连表时请把一次性能过滤最多的条件放在上面(即区分度最大的条件)
请求第三方接口一定要设置超时
使用Docker容器部署,必须设置CPU和内存上限,且不得与所在机器内存大小相同或非常接近.
数据库(MySQL)使用
utf8mb4
(而不是utf8
)作为默认的字符集, 因为MySQL的utf8
不是我们平日里所说的utf8,它只能利用 最多三个字节,因此无法使用存储emoji
目前发现的可以改善的地方
[x] session可以和request脱离,手动
session = Session()
而非app.before_request
[ ] constants 可以使用
Enum
类

关注公众号,获得及时更新
Python的yield关键字有什么作用? 借助coroutine用同步的语法写异步 Python3函数参数中的星号 使用Git Hooks Token Bucket 算法 nginx配置笔记 阅读Flask源码 尤克里里 学习使用Bootstrap4的栅格系统 利用Github的WebHook完成自动部署 使用Tornado和rst来写博客 Haskell do notation foldl 和 foldr 的变换 Haskell TypeClass 笔记 重新捡起你那吃灰的树莓派
Recommend
-
74
-
65
-
93
↗热爱分享的程序员都在这里 这是一份昨天在开发者头条上最受大家欢迎的优质文章列表,头条君每日为您送达,不见不散!...
-
61
当你还是个孩子的时候,是否曾经为了了解某些东西的内部原理而故意把它们大卸八块?我们都这样做过。而在今天,我们把这种行为称为混沌工程。 作为开发者,我们的主要目标之一是开发稳定、安全且无错误的软件。为了实现这些目标...
-
53
-
72
“ 这篇文章,给大家聊一个生产环境的实践经验:线上系统部署的时候,JVM堆内存大小是越大越好吗?先说明白一个前提,本文主要讨论的是Kafka和Elasticsearch两种分布式系统的线上部署情况,不是普通的Java应用系统。1、是否依赖Java系统自身内存处
-
73
【编者的话】私有云平台的建设和公司在不同阶段的需求是息息相关的,瓜子云平台从 2017 年启动项目,到目前承载了公司上千个应用服务,每月服务发布次数达上万次。在公司业务爆发性增长的背景下,云平台团队从 0 到 1 的完成了平台搭建,...
-
56
-
37
Surging实践经验 - 懒小虫 - 博客园 只是一些学习笔记而已!看书心得~~~ 知道自己菜,就应该好好努力呗!!!
-
10
挑战自己,编程你的五子棋:Python+Pygame实践经验分享 作者:子午Python 2023-10-07 11:58:52 本文将详细指导你如何使用Python语言和Pygame库,一步步打造自己的五子棋游戏!
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK