在项目目录层级内创建Django应用有哪些收益?是否会影响性能?
Django REST Framework应用嵌套放置方案答疑
该方案的其他优势
除了避免与第三方包命名冲突外,这种将自定义应用放在项目父目录内的设计还有这些实用优势:
- 导入辨识度更高:内部应用的导入路径统一携带项目名前缀,例如
from myproject.pay.views import PayView,开发者一眼就能区分导入的内容是项目自研应用、还是安装的第三方依赖,不会出现重名模块导入错误。 - 项目结构更规整:所有业务相关的应用统一收纳在项目目录下,不会和顶层的
manage.py、依赖声明文件、部署配置等项目级公共文件混放,应用数量多的时候查找、维护效率更高。 - 可移植性更强:项目打包、迁移部署时,所有自研应用都在统一目录下,不需要额外调整
sys.path或者修改应用注册路径,降低配置出错概率。 - 权限控制更方便:如果需要给不同开发者分配不同应用的访问权限,集中收纳的应用目录更适配目录权限管控规则。
额外目录嵌套的性能影响
不会产生任何可感知的性能开销:
Python本身有模块导入缓存机制,首次导入模块后会将模块对象缓存到sys.modules中,后续所有导入操作都会直接读取缓存,不会重复遍历目录结构。哪怕多了一层目录嵌套,仅会在项目首次冷启动时增加纳秒级的目录查找耗时,完全可以忽略,对项目运行时的接口响应、业务处理性能没有任何影响。
内容的提问来源于stack exchange,提问作者Masked Man
相关产品推荐
相关产品推荐

