Запуск внешних(сторонних, cron) скриптов в django

/
2013-11-04 18:07
Просмотры: 2985

Django logoПри разработке проекта на Django бывают случаи, когда нужно сделать запуск скрипта не через веб интерфейс, например из консоли или добавить скрипт в cron. Но при этом хотелось бы оставить весь функционал и особенности фреймворка, такие как ORM или работа с моделями.

Для этого нам нужно две вещи: запуск скрипта в определенном виртуальном окружении, в том окружении с которым работает Django и сам импорт Django-проекта и настроек в наш скрипт.

Что бы запустить скрипт cron.py в опрделенном окружении, нужно просто указать путь к локальной версии Python(/var/www/django/env/bin/python3) в котором устанавливалась Django. Это можно добавить в crontab для запуска скрипта по расписанию:

/var/www/django/env/bin/python3 cron.py

В самом скрипте cron.py указываем путь к Django-проекту(/var/www/django/project/project) и импортируем настройки(project.settings)

import os
import django

def execute_command():
	from myproject.models import MyModel
	try:
		print('Run shell script')
	except Exception as e:
		print(e)

if __name__ == "__main__":
	os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings")
	django.setup()
	execute_command()

Далее в этом скрипте можно подключать модули Django и использовать родной функционал.

Добавить комментарий

comments powered by Disqus