微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Nameko rpc 函数中阻止 Firestore https 调用

如何解决在 Nameko rpc 函数中阻止 Firestore https 调用

使用 nameko rpc、firestore 的简单服务。

class GreetingService:
    name = "greeting_service"

    @rpc
    def hello(self,name):
        cred = credentials.Certificate("...")
        firebase_admin.initialize_app(cred)
        client = firestore.client()
        ref = client.db.collection("/users")
        ref.add({'name': name}) # BLOCKED
        return "Hello,{}!".format(name)

调用 rpc 方法时,最后的调试日志是:

Making request: POST https://oauth2.googleapis.com/token
Starting new HTTPS connection (1): oauth2.googleapis.com:443

之后什么也没有发生,请求没有完成,也没有抛出任何错误。我想这与并发和/或解释器以某种方式被 https 请求阻止有关...

我的研究笔记如下。

Firestore 代码自行运行,没有任何问题。在这种情况下,只能在 Firestore 创建的实例上没有问题。

Lib 版本(使用不同的 urllib3 1.25.,1.26. 并且存在 https/socket 连接问题的常见问题):

nameko                        2.12.0
firebase-admin                4.5.1
urllib3                       1.25.10

花了几个小时玩线程,甚至处理 asyncio lib 和其他类似的东西(来自 nameko 的 DependencyProvider、ThreadPoolExecutor、ProcesspoolExecutor、线程、多处理)。

尝试“黑客”,例如:https://hiranya911.medium.com/firebase-python-admin-sdk-with-asyncio-d65f39463916

目前没有进展 - 欢迎提出任何建议。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。