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