【发布时间】:2017-06-01 10:34:44
【问题描述】:
我正在使用 Python 和 Flask 构建一个简单的网站。当我在终端中运行以下命令时,我注意到了:
sudo python app.py
它设置了所有内容并让我的网站可以从本地端口在网络浏览器中访问。我的问题是我的 Flask app.py 文件进行了一些网络抓取,并在访问时在网站中显示结果。
遗憾的是,每次有人访问我的网站时,这些网络抓取数据似乎都不会更新。相反,当我输入sudo python app.py 时,网络抓取代码似乎只运行一次,因此访问 URL 时的结果是静态的。我希望 app.py 在每次有人访问该站点时运行以获取最新的实时抓取数据。这可能吗?我将如何使用烧瓶和 python 做到这一点?
我的app.py 包含:
from flask import Flask, flash, redirect, render_template, request, session, abort
from sklearn.externals import joblib
import praw
import datetime
from operator import attrgetter
import sys
import numpy as np
class Post:
def __init__(self, subreddit):
self.subreddit = subreddit
class HotPost:
def __init__(self, subreddit, ):
self.subreddit = subreddit
reddit = praw.Reddit(client_id='myClientId',
client_secret='myClientSecret',
user_agent='pythonscript:com.example.hotandrisingcheckerandbarker:v0.1 (by /u/myusername)',
username='myusername',
password='mypassword')
subredditsToScan = ["Art", "videos", "worldnews"]
svm = joblib.load('modelSvm.pkl')
trendingPosts = []
for subreddit in subredditsToScan:
for submission in reddit.subreddit(subreddit).hot(limit=150):
trendingPosts.append(Post(subreddit))
app = Flask(__name__)
@app.route("/")
def index():
#return "Flask App!"
return render_template(
'list.html',name=len(trendingPosts))
@app.route("/hello/<string:name>/")
def hello(name):
return render_template(
'list.html',trendingPosts=trendingPosts)
if __name__ == "__main__":
app.run(host='0.0.0.0', port=80)
【问题讨论】:
-
app.py中有什么内容? -
app.py 包含我所有抓取网站的代码以及 @app.route("/hello/
/") 和告诉网站什么的 hello 函数 def 。 html 页面显示它们 -
抽象地描述它不是很有帮助。请edit您的问题并将最重要的部分添加为minimal reproducible example。
-
添加了这个,虽然这与我的特定代码关系不大,更多的是与架构和使用烧瓶部署网站有关,所以不确定我的代码是否会为答案增加很多洞察力,但也许我错了。