Flask+Cloud Run环境下操作Firestore数据库时程序冻结及超时问题排查
问题:Firebase Admin操作Firestore无响应或超时
我在Cloud Run服务器上运行以下代码:
cred = credentials.Certificate("firebaseCertificate.json") firebase_admin.initialize_app(cred) app = Flask(__name__) @app.route('/something', methods=["POST"]) def some_route(): some_id = req["some_id"] print(some_id) # 此处之后无任何输出,Firestore数据库也无变化 db = firestore.client() doc_ref = db.collection('some_collection').document(some_id) doc_data = doc_ref.get().to_dict() if doc_data == None: doc_data = {} doc_data['my_condition'] = True doc_ref.set(doc_data) print("done modifying changes to firestore") return "Done!"
- 第一个
print正常输出后,终端无后续内容,无报错,Firestore数据库也没有文档被添加或修改 - 问题在Cloud Run容器和本地机器上均出现
- 后续程序直接出现超时错误,错误发生在获取数据库数据或执行
doc_ref.set操作时 - 已确认
firebaseCertificate.json有效(已重置测试) - 此前类似代码在另一个端点运行正常
- 无法使用Cloud Functions,因为全局代码依赖需要自定义Docker容器安装的外部依赖
解决方案
- Cloud Run端:清理Artifact Registry中的旧容器后问题解决
- 本地Windows机器:同步系统时间(此前系统时间快了2小时)后问题解决
内容的提问来源于stack exchange,提问作者Leotheperegrine
相关产品推荐
相关产品推荐

