Python Flask/ReactJS/React路由器,Heroku部署API调用不适用于GCP

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

我有一个部署到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(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)“}