【问题标题】:Django best practice for scripts organizingDjango 脚本组织的最佳实践
【发布时间】:2021-01-24 10:36:35
【问题描述】:

我在 Django 3.1 上的项目具有以下布局:

.
├── app
│   ├── app
│   │   ├── asgi.py
│   │   ├── __init__.py
│   │   ├── settings.py
│   │   ├── urls.py
│   │   └── wsgi.py
│   ├── core
│   │   ├── admin.py
│   │   ├── apps.py
│   │   ├── fixtures
│   │   │   ├── Client.json
│   │   │   └── DataFeed.json
│   │   ├── __init__.py
│   │   ├── migrations
│   │   │   ├── 0001_initial.py
│   │   │   ├── 0002_auto_20201009_0950.py
│   │   │   └── __init__.py
│   │   ├── models.py
│   │   └── tests
│   │       └── __init__.py
│   └── manage.py

我想在这个项目中添加 2 个脚本:

  • download_xml.py - 按计划从外部来源检查和下载 .xml 文件(每约 30 分钟一次)
  • update_db_info.py - 由 download_xml.py 调用并将数据从下载的 xml 传输到数据库

为此类脚本组织展示位置的最佳 django 做法是什么?

我的想法

  1. 只需在 app/core 中创建 scripts 文件夹并将脚本放在那里。使用 cron 调用它们
  2. 运行python manage.py startapp db_update 因此将创建 django 中的新应用程序。我将从其中删除迁移、视图、模型等并将脚本放在那里。再次使用 cron
  3. 创建 app/core/management/commands 文件夹并将脚本放在那里。使用python manage.py download_xml && python manage.py download_xml update_db_info通过cron调用它们

【问题讨论】:

    标签: django


    【解决方案1】:

    选项 3(大部分)

    但是,如果 download_xml.py 不使用或不依赖 Django,我会将其放在 Django 项目之外的 scripts 目录中(但仍处于源代码控制中)。如果脚本确实需要与您的应用程序一起部署,您可能决定不这样做。不过,它不需要是管理命令。

    update_db_info.py 听起来肯定最适合作为管理命令。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-08
      • 2010-10-19
      • 2014-02-12
      • 1970-01-01
      • 1970-01-01
      • 2017-11-06
      • 2011-03-14
      • 2015-12-22
      相关资源
      最近更新 更多