首页 > 解决方案 > Django 后端脚本调度

问题描述

我正在使用 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)

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

先感谢您!

标签: pythondjangoweb-development-server

解决方案


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

您可以在此处阅读有关它的更多信息,并查看其他一些选项。

设置计划的工作?


推荐阅读