Как мне запланировать работу в Django?

#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, и она может сериализовать / десериализовать в объекты расписания, вы можете написать автономный скрипт для чтения расписаний из базы данных, а затем перейти в режим ожидания и запускать задачи в цикле. Страница расписания, на которую вы ссылались, имеет очень примитивную версию прямо там.