#python #django
#python #django
Вопрос:
Я должен запланировать задание с помощью расписания в моем веб-приложении django.
def new_job(request):
print("I'm working...")
file=schedulesdb.objects.filter (user=request.user,f_name__icontains ="mp4").last()
file_initiated = str(f_name)
os.startfile(f_name_initiated)
Мне нужно сделать это с отфильтрованным временем в БД
GIVEN DATETIME = schedulesdb.objects.datetimes('request_time', 'second').last()
schedule.GIVEN DATETIME.do(job)
Комментарии:
1. попробуйте сельдерей
Ответ №1:
Django — это веб-фреймворк. Он получает запрос, выполняет любую необходимую обработку и отправляет ответ. В нем нет какого-либо постоянного процесса, который мог бы отслеживать время и запускать запланированные задачи, поэтому нет хорошего способа сделать это, используя только Django.
Тем не менее, Сельдерей (http://www.celeryproject.org /) — это платформа python, специально созданная для выполнения задач, как запланированных, так и по требованию. Он также интегрируется с Django ORM с минимальной конфигурацией. Я предлагаю вам изучить это.
Вы могли бы, конечно, написать свой собственный внешний скрипт, который использовал бы модуль schedule, который вы упомянули. Вам нужно было бы реализовать способ записи объектов расписания в базу данных, а затем вы могли бы заставить свой скрипт прочитать и выполнить их. Ваша модель «scheduledb» уже реализована?
Комментарии:
1. Я проверял сельдерей, я думаю, он может выполнять пользовательскую работу в заранее определенное время
2. Я проверял сельдерей, я думаю, он может запускать пользовательское задание в заранее определенное время CELERYBEAT_SCHEDULE = { ‘every-second’: { ‘task’: ‘example.say_hello’, ‘schedule’: timedelta (seconds = 5), }, } Мне нужно что-то, что может запускать задание в определенное время, указанное пользователем…
3. Я почти уверен, что можно планировать задачи в celery во время выполнения. В любом случае, если у вас уже есть модель scheduledb, и она может сериализовать / десериализовать в объекты расписания, вы можете написать автономный скрипт для чтения расписаний из базы данных, а затем перейти в режим ожидания и запускать задачи в цикле. Страница расписания, на которую вы ссылались, имеет очень примитивную версию прямо там.