gpt4 book ai didi

python - Google Cloud Python灵活环境多线程数据库 worker 卡住

转载 作者:行者123 更新时间:2023-12-03 13:08:43 32 4
gpt4 key购买 nike

我在Google App Engine Python Flexible Environment上运行了一个灵活的服务来处理重负载。我运行PSQ workers to handle tasks through Pub/Sub

只要我与单线程 worker 一起工作,这一切都很好。在单线程 worker 上,如果我像这样实例化数据存储客户端:

from google.cloud import datastore
_client = datastore.Client(project='project-name-kept-private')

...并检索一个实体:
entity = _client.get(_client.key('EntityKind', 1234))

...效果很好。

但是,一旦我在多线程工作程序中执行了完全相同的操作,它就会冻结在最后一行:
entity = _client.get(_client.key('EntityKind', 1234))

我知道它在此行上完全失败,因为我在该特定行之前和之后都使用了 logging.error,如下所示:
import logging
logging.error('entity test1')
entity = _client.get(_client.key('EntityKind', 1234))
logging.error('entity test2')

一行 entity test1entity test2都出现在单线程worker的日志中,但是只有 entity test1被打印在多线程worker上。它永远不会完成任务–它只是停留在那条线上。

任何正确方向的建议或建议都会有很大帮助。我已经为这个问题苦苦挣扎了一段时间了。

最佳答案

我发现了问题所在,当“datastore_client”构造其api客户端时,默认情况下它使用gRPC。显然,如果使用多线程工作程序,此操作将冻结。通过在环境变量中将GOOGLE_CLOUD_DISABLE_GRPC设置为True,可以强制其使用HTTPDatastoreAPI。这“解决”了我的问题。

关于python - Google Cloud Python灵活环境多线程数据库 worker 卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46831801/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com