我在Google App Engine Python Flexible Environment上爲重負載運行靈活的服務。我運行PSQ workers to handle tasks through Pub/Sub。Google雲Python靈活環境多線程數據庫工作者凍結
只要我與單線程工作人員一起工作,這就是一切都很好。在單線程的工人,如果我實例化一個數據存儲客戶端,像這樣:
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 test1
和entity test2
都出現在日誌上的單線程工人,而是僅entity test1
被打印在多線程的工人。它永遠不會完成任務 - 它只會停留在那條線上。
任何意見或指針在正確的方向將有很大的幫助。我一直在這個問題上掙扎了很長一段時間。