gpt4 book ai didi

python - 我应该采取措施确保 Django 应用程序在编写之前可以扩展吗?

转载 作者:行者123 更新时间:2023-11-29 14:10:43 25 4
gpt4 key购买 nike

因此,我正在考虑使用 python2 django(-rest-framework)、postgres 和 angular 编写应用程序。

我知道有很多事情可以做

  • 负载均衡器背后的多服务器设置
  • 数据库复制/分片?
  • 缓存(以各种方式)
  • 将 DRF 序列化程序替换为 serpy
  • 在 python3 上运行
  • 在 pypy 上运行

我的问题是 - 其中哪些(或其他事情)真正应该在项目开始时就完成?

最佳答案

在编写时考虑到可扩展性。

可扩展性不仅限于生产服务器/环境,还包括开发环境。

始终牢记可扩展性。

开发中

开发时的可扩展性让您可以无缝地开发产品。

  1. 构建您的存储库
    使用 GitFlow 等 git 分支模型,以便开发人员可以并行工作,或者单个开发人员可以切换不同功能的工作。使用错误跟踪器。

  2. 设计您的应用。
    在实际编写一行代码之前,写下您将要编写的应用程序。设计应用程序以最小化关系(ManyToMany、ForeignKey 等)和导入。 Django 提供可插入的应用程序架构,请随意明智地使用它。

  3. 首先编写您的测试。
    这确保您可以迁移(生产环境)、升级和降级,而痛苦和损失更少。相信我,编写测试感觉很无聊,但这是值得的。

  4. 抽象模型、管理者
    使用Abstract Models和Managers,可以消除bolier板模型代码,帮助您维护代码。

  5. 描述性地命名变量、类和方法。
    描述性地命名变量、类和方法,因为您无需查看文档就能知道它代表什么。

  6. 文档代码。
    随意记录类和方法,这样您或查看代码的其他同行就可以了解缩进的目的,而不是通过堆栈跟踪来查看方法的作用。

  7. 使用调试工具栏
    在开发过程中使用 Django 调试工具栏,在测试 API 时,使用 prefectch_related()select_related() 来最小化/消除重复查询。

  8. 模块化代码。
    模块化代码。 Python 和 django 通常鼓励使用模块。模块易于管理。使用类、更多继承和抽象基类来重用代码。

  9. 使用持续集成
    使用持续集成测试您的存储库并确保新推送不会破坏系统。

在生产中。

生产中的可扩展性让您可以无缝地为无限用户提供产品。

  1. 用于多服务器设置

    • 坚持休息设计原则。
    • 消除 session 。
    • 使用像 Redis 这样的分布式缓存。
  2. 将 DRF 序列化程序替换为 serpy
    如果您需要更快的速度并且您对它感到满意,请从 serpy 开始。坚持使用 Serpy 比重写 DRF 序列化程序要好,因为两者看起来都很顺眼,但请确保您没有通过优化丢失的 1 或 2 毫秒来浪费时间。

  3. 在python3上运行
    取决于您计划使用的库。

  4. 在pypy上运行
    pypy 比标准实现更快。使用 pypy 取决于库兼容性。 A list of compatibile package and status of compatibility.

现在是问题,

哪些(或其他事情)真正应该在项目开始时就完成?

Ans: Developemet (1,2,3,4,5,6,7,8) Production(1,2)

关于python - 我应该采取措施确保 Django 应用程序在编写之前可以扩展吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34439775/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com