无法在 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 =也许您可以尝试通过从 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.py
和python app2.py
来运行服务器
【讨论】:
感谢您的评论,但我的问题是 APP1 如何将 JSON 数据传递给 APP2 ,如果您在 APP2 代码中看到 json_data =以上是关于无法在 FLASK 中连接 2 个应用程序的主要内容,如果未能解决你的问题,请参考以下文章
使用数据库连接将代码部署到 Azure Web 时,Flask 应用程序无法呈现,但在本地服务器上工作正常
Flask-SQLAlchemy:在回滚无效事务之前无法重新连接
Flask,Pymongo和Mongoengine - ImportError:无法导入名称'app'