如何让一个Django应用在Heroku上运行,并使用Heroku Scheduler做一个预定的工作。

问题描述 投票:0回答:1

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

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

如何使用 Heroku调度器 来做?

django heroku scheduled-tasks scheduler scheduling
1个回答
-2
投票

如前所述 此处,快速简单的回答这个问题的方法是问自己,你会怎么做才能周期性地运行那个脚本,就像你自己是调度员一样。

现在,最好的方法是在你的Django应用中随时运行一个脚本,它是创建一个 自定义管理命令 并在需要的时候在命令提示符下运行它,就像这样。

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_appmanagementcommandssome_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 > resources

在附加组件部分选择 Heroku Scheduler点击它,使其窗口打开,然后点击添加作业,选择你想要的时间,插入命令 python manage.py some_custom_command 并保存。

© www.soinside.com 2019 - 2024. All rights reserved.