首页 > 解决方案 > 如何让 Django 应用在 Heroku 上运行,使用 Heroku Scheduler 执行计划作业

问题描述

我正在开发一个在 Heroku 上运行的 Django 应用程序。

为了使用来自某个 API 服务的一些数据更新我的数据库,我需要定期运行某个脚本(比如说myscript)。

如何使用Heroku Scheduler来做到这一点?

标签: djangoherokuscheduled-tasksschedulerscheduling

解决方案


正如这里已经解释的那样,回答这个问题的快速简单的方法是问自己如何定期运行该脚本,就好像您自己是调度程序一样。

现在,随时在 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并保存。


推荐阅读