我知道足够的 DevOps 是危险的。我已经成功地将一个非常简单的 python Flask 应用程序部署到 App Engine,该应用程序基本上将收到的发布数据作为消息发布到 PubSub。它与 Google 的 sample code 几乎相同这样做。唯一的区别是它使用我通过应用程序存储库推送的服务帐户来访问 PubSub 来规避 this issue .
到目前为止工作得很好,但我开始在 threading.py
中启动新线程时看到极少数错误:
1)
Traceback (most recent call last):
File "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi", line 33, in grpc._cython.cygrpc._spawn_callback_async
File "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi", line 24, in grpc._cython.cygrpc._spawn_callback_in_thread
File "/usr/lib/python2.7/threading.py", line 736, in start
_start_new_thread(self.__bootstrap, ())
thread.error: can't start new thread
2)
Traceback (most recent call last):
File "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi", line 33, in grpc._cython.cygrpc._spawn_callback_async
File "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi", line 24, in grpc._cython.cygrpc._spawn_callback_in_thread
3)
Traceback (most recent call last):
File "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi", line 33, in grpc._cython.cygrpc._spawn_callback_async
File "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi", line 33, in grpc._cython.cygrpc._spawn_callback_async
File "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi", line 24, in grpc._cython.cygrpc._spawn_callback_in_thread
File "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi", line 24, in grpc._cython.cygrpc._spawn_callback_in_thread
File "/usr/lib/python2.7/threading.py", line 736, in start
File "/usr/lib/python2.7/threading.py", line 736, in start
我有 2 个问题,按重要性排列:
- 这个应用程序基本上需要 100% 的正常运行时间才能不丢失数据(如果我的服务器端出现错误,客户端会尝试重试)。这些错误是否属于 App Engine 管理应用程序资源的内部错误,并且不会导致处理实际请求时出现错误?如何确定我是否曾响应过 HTTP 错误/未成功处理请求?我在 nginx 日志中没有看到任何错误...这是我需要查看是否有任何失败的地方吗?
- 有办法修复此错误吗?
最佳答案
看起来 publisher.publish(topic_path, data=data)
是一个异步操作,返回一个 concurrent.futures.Future
对象
您是否尝试调用 Future 的 result()
? https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.Future.result
这将阻塞,直到 future 的对象成功、失败或超时。
然后您可以将该结果作为 HTTP 响应转发。
希望结果对象能为您提供有关错误的更多信息。
关于python - Google Cloud App Engine 灵活的 Python 2.7 环境错误启动新线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51386090/