Понадобилось мне по расписанию запускать функцию из views.py (читай через консоль). Наткнулся на пару заметок (раз, два). В комментариях к первой заметке и в апдейте второй сказали, что появилась возможность в джанге делать подобное практически из коробки - можно создать команду для manage.py.
Сразу даю ссылку на оф. документация по созданию подобных команд.
И приведу пример попроще - именно когда требуется запустить только функцию из views.py
Необходимо создать папки (management/commands) внутри приложения и скопировать в них по файлу __init__.py, как указано в примере документации:
polls/Далее создаем в папке "commands" файл "run_function.py"
__init__.py
models.py
management/
__init__.py
commands/
__init__.py
_private.py
closepoll.py
tests.py
views.py
В нем пишем:
from django.core.management.base import BaseCommandТеперь через консоль можно выполнять:
from Project.app.views import func # импорт функции из views.py
class Command(BaseCommand):
def handle(self, *args, **options):
func() # вызов функции
python manage.py run_functionВ кроне возможно понадобится запускать с полными путями, что python, что manage.py
PS. Вполне возможно, что это в корне неправильный подход - буду рад советам.
0 комментариев:
Отправить комментарий