Библиотека планировщика не работает с представлением на основе функций в django
Я работаю над функциональным представлением на django и хочу запланировать задачу на каждые несколько минут. Я планирую задачу с помощью библиотеки "schedule" [pip install schedule]. Когда я выполняю задачу, я получаю ошибку : TypeError: home() missing 1 required positional argument: 'request'.
Если я пытаюсь передать некоторую строку в параметре запроса, я получаю ошибку : AttributeError: объект 'bool' не имеет атрибута 'META'
что я должен передать в параметре "request" ?
from django.shortcuts import render
import requests
import json
import schedule
import time
def home(request):
print("Scheduler working")
res = requests.get("https://jsonplaceholder.typicode.com/posts").json()
return render(request, "home.html", {'res':res})
schedule.every(5).seconds.do(home)
#TypeError: home() missing 1 required positional argument: 'request'
#schedule.every(5).seconds.do(home(request=True)
#AttributeError: 'bool' object has no attribute 'META' (if try to pass some parameter such as string or bool or int)
while True:
schedule.run_pending()
time.sleep(1)
Я не знаю о пакете schedule, поскольку я использую celery beat и celery tasks для обработки фоновых рабочих и их планирования.
Ошибка будет продолжаться, потому что вы не можете получить доступ к запросу таким образом. Способы планирования задач следующие: Использование управляющей команды и составление расписания через кронтаб, celery + celery beat или django-q. Возможно, есть и другие альтернативы, но это лучшие для вашего случая.
Edit: Вот хорошая ссылка для понимания запросов и ответов: https://docs.djangoproject.com/en/4.1/ref/request-response/