Django脚本组织最佳实践

时间:2020-10-09 10:44:37

标签: django

我在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 -按计划(每30分钟)从外部来源检查和下载.xml文件
  • update_db_info.py -由 download_xml.py 调用,并将数据从下载的xml传输到数据库

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

我的想法

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

1 个答案:

答案 0 :(得分:1)

选项3(大多数情况下)

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

update_db_info.py绝对听起来像最适合作为管理命令。

相关问题