Библиотека планировщика не работает с представлением на основе функций в 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/

Вернуться на верх