Исправление вызова по расписанию
Письмо:
schedule.every().day.at("17:19").do(<b>republic(requests)</b>)
schedule.every().day.at("17:19").do(<b>republic(requests)</b>)
schedule.every().day.at("17:19").do(<b>republic(requests)</b>)
Вы планируете результат из republic(request)
как задание, а не " вызов republic
с requests
как задание ".
Функция do(job_func, *args, **kwargs)
[schedule-doc] , однако, позволяет предоставлять параметры, вы предоставляете эти после ссылку на задание, поэтому:
schedule.every().day.at("17:19").do(<b>republic, requests</b>)
schedule.every().day.at("17:19").do(<b>republic, requests</b>)
schedule.every().day.at("17:19").do(<b>republic, requests</b>)
Запуск планировщика в определенном потоке
Вы не можете запустить планировщик таким образом в Django, так как это будет означать, что вы продолжаете выполнять команду, когда загружает файл. Таким образом, загрузка файла никогда не прекратится, и, следовательно, сервер никогда не запустится.
Вы можете запустить планировщик асинхронно, используя:
from threading import Thread
from __future__ import print_function
from django.shortcuts import render
from django.utils import timezone
from django.http import HttpResponse
from datetime import datetime, timedelta
import requests
import schedule
import time
def republic(request):
return HttpResponse("<h1>Success Hindustan</h1>")
schedule.every().day.at("17:19").do(republic, requests)
schedule.every().day.at("17:19").do(republic, requests)
schedule.every().day.at("17:19").do(republic, requests)
class SchedulerThread(Thread):
@classmethod
def run(cls):
while True:
schedule.run_pending()
time.sleep(interval)
ScheduleThread().start()
Наконец, обратите внимание, что requests
является не a HttpRequest
объектом, поэтому вы должны писать свои функции не как представления, а как «ванильные» функции, выполняющие определенную работу.