Python Flask中第二个RSS获取函数无法工作是什么原因
问题排查
你的第二个函数无法工作,核心问题如下:
- 没有给
get_feeds_ol()添加路由装饰器:Flask只会识别被@app.route()装饰的函数作为Web接口,当前第二个函数只是普通的内部函数,无法响应HTTP请求。 - 缺少
feedparser库的导入语句:你代码里调用了feedparser.parse()但顶部没有写导入逻辑,第一个函数能运行属于临时环境的偶然情况,正规代码必须显式导入依赖。 - CORS配置键名书写错误:
app.config['CORS HEADERS']中间误用了空格,正确配置键应为CORS_HEADERS(中间是下划线)。 - 补充:第二个RSS源使用HTTP协议,部分网络环境下可能存在跳转、访问超时问题,建议加基础的异常判断,避免源站异常时服务直接报500错误。
修复后代码
# 补全缺失的依赖导入 import feedparser from flask import Flask, jsonify from flask_cors import CORS, cross_origin app = Flask(__name__) CORS(app, resources={r"/api/*": {"origins": "*"}}) # 修正CORS配置的键名,空格改为下划线 app.config['CORS_HEADERS'] = 'Content-Type' URLS = [ 'https://status.ui.com/history.rss', 'http://status.us.onelogin.com/pages/538511e2ce5cb97537000144/rss' ] @app.route("/feed/ui", methods=['POST','GET']) @cross_origin() def get_feeds_ui(): try: feed = feedparser.parse(URLS[0]) # 加非空判断,避免entries为空时索引报错 if not feed.entries: return jsonify(code=500, msg="RSS源获取失败") first_article = feed['entries'][0] return jsonify( title=first_article.title, link=first_article.link, updated=first_article.updated ) except Exception as e: return jsonify(code=500, msg=str(e)) # 给第二个函数绑定独立路由 @app.route("/feed/ol", methods=['POST','GET']) @cross_origin() def get_feeds_ol(): try: feed = feedparser.parse(URLS[1]) if not feed.entries: return jsonify(code=500, msg="RSS源获取失败") first_article = feed['entries'][0] return jsonify( title=first_article.title, link=first_article.link, updated=first_article.updated ) except Exception as e: return jsonify(code=500, msg=str(e)) if __name__ == '__main__': app.run(debug=True)
使用说明
- 运行代码前先确认安装了所有依赖:执行命令
pip install flask flask-cors feedparser - 第一个UI的RSS接口访问地址为
http://127.0.0.1:5000/feed/ui - 第二个OneLogin的RSS接口访问地址为
http://127.0.0.1:5000/feed/ol
内容的提问来源于stack exchange,提问作者Carolina D Vallecillo
相关产品推荐
相关产品推荐

