无法在 FLASK 中连接 2 个应用程序

Posted

技术标签:

【中文标题】无法在 FLASK 中连接 2 个应用程序【英文标题】:Unable to connect 2 Apps in FLASK 【发布时间】: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 = ,所以我需要一个提示,如我如何更正这条线希望澄清 任何建议!! 【参考方案1】:

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

编辑:

这可能会有所帮助: communication-between-two-python-scripts 和 communication-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 = ,我正在探索这个???

以上是关于无法在 FLASK 中连接 2 个应用程序的主要内容,如果未能解决你的问题,请参考以下文章

使用数据库连接将代码部署到 Azure Web 时,Flask 应用程序无法呈现,但在本地服务器上工作正常

Flask-SQLAlchemy:在回滚无效事务之前无法重新连接

如何让 Flask SQLAlchemy 重用数据库连接?

Flask,Pymongo和Mongoengine - ImportError:无法导入名称'app'

在 dockerized 环境中无法从 Flask 连接到 Kafka

在多租户应用程序中动态设置 Flask-SQLAlchemy 数据库连接