django - 如何让 Django 应用在 Heroku 上运行,使用 Heroku Scheduler 执行计划作业
问题描述
我正在开发一个在 Heroku 上运行的 Django 应用程序。
为了使用来自某个 API 服务的一些数据更新我的数据库,我需要定期运行某个脚本(比如说myscript
)。
如何使用Heroku Scheduler来做到这一点?
解决方案
正如这里已经解释的那样,回答这个问题的快速简单的方法是问自己如何定期运行该脚本,就好像您自己是调度程序一样。
现在,随时在 Django 应用程序中运行脚本的最佳方法是创建自定义管理命令并在需要时从命令提示符运行它,如下所示:
python manage.py some_custom_command
然后,如果您是调度程序,您将在每次写入调度时从命令提示符运行该命令。
因此,一个好主意是让 Heroku Scheduler 的行为相同。因此,这里的目标是让 Heroku Schedulerpython manage.py some_custom_command
在预定的时间运行。
您可以这样做:
在your_app
目录中,创建一个文件夹management
,然后在其中创建另一个文件夹commands
,最后在其中创建一个文件some_custom_command.py
所以,要清楚
your_app/management/commands/some_custom_command.py
然后,在里面some_custom_command.py
插入:
from django.core.management.base import BaseCommand
from your_app.path_to_myscript_file import myscript
class Command(BaseCommand):
def handle(self, *args, **options):
# Put here some script to get the data from api service and store it into your models.
myscript()
然后继续 Heroku > your_app > 资源
在附加组件部分选择Heroku Scheduler
,单击它以打开其窗口,然后单击添加作业,选择您想要的时间,插入命令python manage.py some_custom_command
并保存。
推荐阅读
- vue.js - 在 Nuxt 颜色模式下使用 SCSS 变量
- php - PHP关闭期间的“断管”E_NOTICE,关闭套接字上的陈旧数据?
- python - 绘制 Pandas 数据集
- javascript - Node.js 限制 API 请求并将队列限制为 1
- python - discord bot command import text from text file
- rest - 从 Bitbucket rest api 获取 SonarQube PR 装饰状态
- tensorflow - 谷歌深度学习平台无法使用 tensorflow 2.3
- django - SMTP 数据错误。550 b 表单地址与已验证的发件人身份不匹配
- java - 图像未在第二个活动中显示
- node.js - 访问/修改 React 服务器代码