【问题标题】:Python Flask - get the userList from http://localhost:8080/usersPython Flask - 从 http://localhost:8080/users 获取 userList
【发布时间】:2020-07-28 15:26:47
【问题描述】:

我是 Flask 的新手,想开发一个微服务应用程序,可以从 http://localhost:8080/users 中运行的其他微服务(用 spring boots 编写)获取数据。

数据如下:

{"userList":[{"userId":1,"name":"x","email":"x@gmail.com","address":"add1","phone":"123","accountNo":"0000001"},{"userId":2,"name":"y","email":"x@gmail.com","address":"add1","phone":"123","accountNo":"0000001"}

我的代码如下:

from flask import Flask, jsonify, request
import logging
app = Flask(__name__)

os.environ['NO_PROXY'] = '127.0.0.1'
r = request.get('http://127.0.0.1:8080')

@app.route('/users', methods=['GET'])
def cust_search(email):
    json = request.get_json()

if __name__ == '__main__':
    app.logger.setLevel(logging.INFO)
    app.run(debug=True)

我在 venv 中运行时收到以下错误消息:

  File "", line 13, in <module>
    r = request.get('http://127.0.0.1:8080')
  File "", line 347, in __getattr__
    return getattr(self._get_current_object(), name)
  File "/covid_service/venv/lib/python3.7/site-packages/werkzeug/local.py", line 306, in _get_current_object
    return self.__local()
  File "/covid_service/venv/lib/python3.7/site-packages/flask/globals.py", line 38, in _lookup_req_object
    raise RuntimeError(_request_ctx_err_msg)
RuntimeError: Working outside of request context.

这通常意味着您尝试使用需要的功能 一个活动的 HTTP 请求。请参阅有关测试的文档 有关如何避免此问题的信息。

请帮忙

【问题讨论】:

    标签: python-3.x flask


    【解决方案1】:

    对于你正在做的事情,你需要使用内置的requests 模块。

    import requests
    users = requests.get('http://127.0.0.1:8080').json()
    

    flask.requestrequests 不同。它用于处理传递给服务器的请求数据,通常来自表单发布,并且正如您所说,需要一个活动的 HTTP 请求。

    【讨论】:

    • @app.route('/users', methods=['GET']) def cust_search(): users = requests.get('127.0.0.1:8080/users').json() print(users)
    • 文件 "/python3.7/site-packages/flask/app.py",第 1950 行,在 full_dispatch_request rv = self.dispatch_request() 文件 "/python3.7/site-packages/flask /app.py”,第 1936 行,在 dispatch_request 中 return self.view_functions[rule.endpoint](**req.view_args) 文件“/covid_service/alert.py”,第 32 行,在 cust_search users = request.get('@ 987654322@ 文件“/covid_service/venv/lib/python3.7/site-packages/werkzeug/local.py”,第 347 行,在 getattr 中返回 getattr(self._get_current_object(), name) AttributeError : 'Request' 对象没有属性 'get'
    • 导入请求 @app.route('/users', methods=['GET']) def cust_search(): r = requests.get('127.0.0.1:8080/users') users = request.form.获取('userList')打印(用户)
    • @Aavik 第一个和第三个 cmets 到底有什么问题?第二条评论可能是我在答案中的拼写错误,但在其他 cmets 中没有回溯
    • [2020-07-28 17:32:55,312] 应用程序中的错误:/users [GET] 上的异常回溯(最后一次调用):文件“/app.py”,第 2447 行,在 wsgi_app response = self.full_dispatch_request() 文件“/app.py”,第 1953 行,在 full_dispatch_request 返回 self.finalize_request(rv) 文件“//app.py”,第 1968 行,在 finalize_request response = self.make_response(rv ) 文件“/app.py”,第 2098 行,在 make_response“视图函数没有返回有效响应。”类型错误:视图函数没有返回有效响应。函数要么返回 None,要么不返回而结束跨度>
    猜你喜欢
    • 2015-09-06
    • 2021-01-20
    • 2021-07-03
    • 1970-01-01
    • 1970-01-01
    • 2019-01-07
    • 2016-10-08
    • 1970-01-01
    • 2016-04-18
    相关资源
    最近更新 更多