【问题标题】:Unable to connect 2 Apps in FLASK无法在 FLASK 中连接 2 个应用程序
【发布时间】:2021-05-09 12:53:23
【问题描述】:

我在 FLASK 中创建了 2 个应用程序,一个应用程序将发出 GET 请求并提取数据,第二个应用程序将从应用程序 1 获取数据并发出 POST 请求以将数据推送到其他系统。

APP1.py

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

    @app.route('/pushdata', methods=['GET', 'POST'])
    def testfn():
        # POST request
         if request.method == 'POST':
            print(request.get_json())  # parse as JSON
            req = request.get_json()
            print(type(req))
            print(req)
            return 'Success!! Reached Flask', 200

    # main driver function
     if __name__ == '__main__':
        app.run(debug=True)

APP2.py

    from flask import Flask,jsonify,request,make_response,url_for,redirect
    import requests, json
    app = Flask(__name__)

    url = 'http://xx.xx.xx.xxx:<PORT>/lemte/7/rest/tenten/'

    json_data = **<JSON DATA received from APP1....................>**

    headers = {'content-type': 'application/json'}

    res = requests.post(url, headers=headers, auth=('XXXXX', 'YYYYY'), data=json.dumps(json_data))
    print ('response from server:',res.text)
    dictFromServer = res.json()

    if __name__ == '__main__':
        app.run(host='localhost',debug=False, use_reloader=True)

我怎样才能做到这一点?搜索了很多,但找不到任何提示/建议。

【问题讨论】:

  • 可能围绕两个 Flask blueprints 重构您的代码,这可能是您正在寻找的。​​span>
  • 您的实际问题是什么?你试过什么?您的描述没有提示您有问题的地方。作为这里的新用户,请使用tour 并阅读How to Ask。顺便说一句:您的部分代码没有正确缩进,这对于 Python 来说是不可接受的。
  • 实际问题是如果您仔细查看 APP2.py ,我无法将从 APP1.py 获得的 JSON 传递给 APP2.py ,代码行显示: json_data = ,所以我需要一个提示,如我如何更正这条线希望澄清
  • 任何建议!!

标签: python flask


【解决方案1】:

也许您可以尝试通过从 APP1 到 APP2 的 POST 请求,或者通过套接字,其中 APP1 是服务器,APP2 是客户端。

编辑:

这可能会有所帮助: communication-between-two-python-scriptscommunication-between-two-python-scripts

他们都有相同的标题但不同的答案

【讨论】:

    【解决方案2】:

    这解决了您的问题,以便让 2 个烧瓶应用程序相互交谈: 在 APP1.py 中:

    from flask import Flask, jsonify, request, render_template
    app = Flask(__name__)
    
    @app.route('/lemte/7/rest/tenten', methods=['GET', 'POST'])
    def testfn():
        if request.method == 'POST':
               print(request.get_json())  # parse as JSON
               req = request.get_json()
               print(type(req))
               print(req)
               return jsonify({"message":"success!! readched flask"}),200
        # return 'Success!! Reached Flask', 200
    
    
    if __name__ == '__main__':
        app.run(debug=True,port=5201)
    

    在 APP2.py 中:

    from flask import Flask,jsonify,request,make_response,url_for,redirect 
    import requests, json
    
    app = Flask(__name__)
    
    url = 'http://localhost:5201/lemte/7/rest/tenten'
    
    json_data = {"test":"hello"}
    
    headers = {'content-type': 'application/json'}
    
    res = requests.post(url, headers=headers, auth=('XXXXX', 'YYYYY'), 
    data=json.dumps(json_data))
    print ('response from server:',res.text)
    dictFromServer = res.json()
    
    if __name__ == '__main__':
        app.run(host='localhost',debug=False, use_reloader=True,port=5200)
    

    【讨论】:

      【解决方案3】:

      您没有在此处指定任何错误

      我认为错误是您尝试在同一端口上同时运行,这是不可能的

      您可以通过在app.run 中指定端口来在不同的端口中运行每一个

      示例:

      应用程序1

      from flask import Flask
      
      app = Flask(__name__)
      
      if __name__ == "__main__":
          app.run(host="localhost", port=5000)
      

      应用程序2

      from flask import Flask
      
      app = Flask(__name__)
      
      if __name__ == "__main__":
          app.run(host="localhost", port=5001)
      

      你可以在两个不同的终端使用python app1.pypython app2.py来运行服务器

      【讨论】:

      • 感谢您的评论,但我的问题是 APP1 如何将 JSON 数据传递给 APP2 ,如果您在 APP2 代码中看到 json_data = ,我正在探索这个???
      猜你喜欢
      • 2015-06-10
      • 2019-09-05
      • 1970-01-01
      • 2022-10-08
      • 2017-03-09
      • 2019-07-11
      • 2021-11-09
      • 1970-01-01
      • 2020-10-17
      相关资源
      最近更新 更多