Django 后端脚本调度

Django back-end scripts scheduling

我正在使用 Django 构建一个网站,除其他外,我想显示有关某个主题的最新消息。例如,我在后端有一个 python 脚本,我想对其进行编程以每 1 小时检索一次最新消息。与此同时,我希望能够显示最近检索到的新闻。我这样做是为了避免每次有人打开我的网站时脚本都被激活。

我的脚本在news.py:

import pprint
import requests
import datetime
import pandas as pd
import dateutil.parser

secret = "********"
url = 'https://newsapi.org/v2/everything?'

quote = 'Amazon'

parameters1 = {
    'q': quote,

    'pageSize': 100,
    'sortby': 'publishedAt',
    'apiKey': secret,
}

response1 = requests.get(url, params=parameters1)
response_json1 = response1.json()
text_combined1 = []
for i in response_json1['articles']:
    if i['content'] != None:
        case = {'Source': i['source']['name'], 'Title': i['title'], 'url': i['url'],
                'Published on:': dateutil.parser.parse(i['publishedAt']).strftime('%Y-%m-%d'), 'Image': i['urlToImage']}
        text_combined1.append(case)
data_amazon = pd.DataFrame.from_dict(text_combined1)
news1 = data_amazon.iloc[0]
news2 = data_amazon.iloc[1]
news3 = data_amazon.iloc[2]

我的 views.py 看起来像这样:

from django.shortcuts import render
from .news import *

def dashboard(request):
    content = {'data': data, 'news1': news1, 'news2': news2, 'news3': news3}
    return render(request, 'dashboard.html',
                  content)

我是网络开发的新手,但我现在的理解是,每次有人向我的网页发送请求时,脚本都是 运行,这会导致新闻显示延迟并且很可能由于请求太多而拒绝访问 news.api。

提前致谢!

一个很好的方法是使用 Celery。它可以让你在 Django 中安排任务。

您可以在此处阅读更多相关信息,还可以查看其他一些选项。

Set up a scheduled job?