运行Django命令/使用manage.py生成索引



我需要运行到Heroku的web工作,每天晚上需要为Elasticsearch生成索引,我想知道是否可能。我需要在python shell上自动运行的命令是:

heroku run python3 manage.py shell --app My_app

from myapp.search_tasks import delete_index, create_index, index_all;

delete_index(); create_index(); index_all();

非常感谢你的帮助。

你可以实现一个管理命令[Django-doc]来做到这一点。在你的应用程序中,你创建了management/commands/目录:

myapp/
__init__.py
management/
commands/
make_es_index.py
models.py
views.py
urls.py

然后在make_es_index.py中,您可以定义该命令:

# my_app/management/commanheroku addons:open schedulerds/make_es_index.py
from django.core.management.base import BaseCommand, no_translations
from myapp.search_tasks import delete_index, create_index, index_all
class Command(BaseCommand):
def handle(self, *args, **options):
delete_index()
create_index()
index_all()

接下来我们可以在Heroku中调度任务,例如使用Heroku Scheduler。我们使用以下命令安装附加组件:

heroku addons:createscheduler:standard

接下来我们在bin/refresh-es-index中创建一个任务:

#!/bin/bash
cd 'root/of/django-project'
python3 manage.pymake_es_index

接下来我们可以调度refresh-es-index任务:

herokuaddons:打开scheduler

并设置需要运行作业的时间间隔

相关内容

  • 没有找到相关文章

最新更新