如何让 Django 应用程序 运行 在 Heroku 上使用 Heroku Scheduler 执行预定作业

How to have a Django app running on Heroku doing a scheduled job using Heroku Scheduler

我正在 Heroku 上开发 Django 应用 运行ning。

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

如何使用 Heroku Scheduler 来实现?

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

现在,任何时候在 Django 应用程序中 运行 脚本的最佳方法是创建一个 custom management command 并在您的命令提示符下 运行 它,当您需要它,就像这样:

python manage.py some_custom_command

然后,如果您是调度员,您将 运行 每次在调度中写入命令提示符中的命令。

因此,让 Heroku Scheduler 表现相同是一个好主意。因此,这里的目标是让 Heroku Scheduler 运行 python 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 > 资源

在附加组件部分 select Heroku Scheduler,单击它以打开其 window,然后单击添加作业,select 您需要的时间,插入命令 python manage.py some_custom_command 并保存。