Python Flask/ReactJS/React路由器,Heroku部署API调用不适用于GCP
我有一个部署到Heroku的应用程序,它使用gunicorn作为Procfile,并有一个Python flask后端,通过Python Flask/ReactJS/React路由器,Heroku部署API调用不适用于GCP,python,reactjs,heroku,Python,Reactjs,Heroku,我有一个部署到Heroku的应用程序,它使用gunicorn作为Procfile,并有一个Python flask后端,通过send\u from\u目录(app.static\u folder,'index.html')和API调用(如 @app.route('/login', methods=['POST']) @cross_origin() def login(): if request.method == 'POST': return loginUser(reques
send\u from\u目录(app.static\u folder,'index.html')
和API调用(如
@app.route('/login', methods=['POST'])
@cross_origin()
def login():
if request.method == 'POST':
return loginUser(request.form['email'], request.form['password'])
我有一个连接文件,看起来像:
import mysql.connector
from mysql.connector import errorcode
from mysql.connector.constants import ClientFlag
config = {
'user': 'root',
'password': 'password',
'host': 'ip',
'database': 'name',
'client_flags': [ClientFlag.SSL],
'ssl_ca': 'ssl/server-ca.pem',
'ssl_cert': 'ssl/client-cert.pem',
'ssl_key': 'ssl/client-key.pem'
}
def connectToDB():
try:
connection = mysql.connector.connect(**config)
if connection.is_connected():
return connection
return False
except:
return False
我可以通过API调用在本地连接到数据库,但是当它在服务器上运行时,它就不起作用了。我通常从这段代码中得到“出了问题”的语句
def loginUser(email, password):
try:
connection = connectToDB()
if(connection != False):
cursor = connection.cursor(buffered=True)
if(invalidEmail(email, cursor, connection)):
return {"response": "No account with that Email"}
userId = getId(email, password, cursor, connection)
connection.commit()
cursor.close()
if(userId == -1):
return {"response": "Incorrect Password"}
return {"response": "Success",
"id": userId}
# need to return ID
except mysql.connector.Error as err:
return {"response": err.msg }
return {"response": "Something went wrong"}
我已经尝试将Fixie扩展添加到heroku,并将静态IP从heroku添加到GCP关系数据库中的授权网络(还尝试添加0.0.0.0/0)
我在heroku日志中没有发现任何错误,只是在服务器上完成时无法连接。我还测试了API调用,它在postman中使用heroku项目链接运行良好。在js文件中添加
返回{“connection”:connection}
并添加console.log(res)后,我在浏览器的控制台中得到{connection:false}输出,在没有Gunicorn的情况下执行Flask应用程序。您的connectToDB
返回False
可能是由于Gunicorn,因为Gunicorn正在建立多个DB连接。(Gunicorn多次运行您的Flask应用程序并自行进行负载平衡)在记录连接错误后,我得到以下消息:{连接:“2055:在'35.239.2…:3306'处与MySQL服务器失去连接,系统错误:2没有这样的文件或目录“},我是否应该使用web:python app.py运行它?@TinNguyen我得到相同的错误,即使我只是运行python文件来执行应用程序:{connection:“2055:在'35.239.2…:3306'与MySQL服务器失去连接,系统错误:2没有这样的文件或目录”}connection:“2055:在'35.239.244.129:3306'与MySQL服务器失去连接,系统错误:2没有这样的文件或目录”proto:Object Procfile是:web:python server/myapp.py
(它在一个服务器文件夹中)更新,我认为ssl文件夹路径不好,但在修复它之后,即使将Procfile设置为使用上面的命令{connection:'2055:在'35.239.2失去与MySQL服务器的连接…系统错误:1[ssl]内部错误(_ssl.c:852)“}