1 回答

TA貢獻1856條經驗 獲得超11個贊
所以我終于想通了,如果不是通過 Cloud Scheduler 觸發云功能,而是通過以下方式手動運行該功能Test Function
GCP 會給你引發的異常。就我而言,我的 Cloud MySQL 連接失敗
Error: function terminated. Recommended action: inspect logs for termination reason. Details:
(pymysql.err.OperationalError) (2003, "Can't connect to MySQL server on '**.***.**.***' (timed out)")
(Background on this error at: http://sqlalche.me/e/e3q8)
所以我只需要引入一個環境變量來在通過代理和unix 套接字連接之間切換,如下所示:
if os.environ.get("ENV") == "local":
db = sqlalchemy.create_engine(
sqlalchemy.engine.url.URL(
drivername="mysql+pymysql",
username=os.environ.get("DB_USER"),
password=os.environ.get("DB_PASS"),
host=os.environ.get("DB_HOST"),
port=3306,
database=PRIMARY_TABLE_NAME
),
pool_size=5,
max_overflow=2,
pool_timeout=30,
pool_recycle=1800
)
else:
db = sqlalchemy.create_engine(
sqlalchemy.engine.url.URL(
drivername="mysql+pymysql",
username=os.environ.get("DB_USER"),
password=os.environ.get("DB_PASS"),
database=PRIMARY_TABLE_NAME,
query={"unix_socket": "/cloudsql/{}".format(os.environ.get("CLOUD_SQL_CONNECTION_NAME"))}
),
pool_size=5,
max_overflow=2,
pool_timeout=30,
pool_recycle=1800
)
添加回答
舉報