Tôi có một bảng trong Google Cloud Datastore, nơi tôi lưu trữ một cấu trúc dữ liệu nhỏ được viết bằng một dịch vụ Python và đọc trong một dịch vụ khác. Tôi đang sử dụng phiên bản gcloud 0.15.0. Đây là mã Python mà tôi sử dụng để viết/đọc dữ liệu đến/từ GCD:Lỗi thời gian chờ của Google Cloud Datastore trong python
from gcloud import datastore
import datetime
import json
class GCD(object):
def __init__(self, project_id):
self.client = datastore.Client(project_id)
def put(self, table, key, data):
with self.client.transaction():
entity = datastore.Entity(self.client.key(table, key), exclude_from_indexes=['context'])
entity.update({'context': json.dumps(data), 'created': datetime.datetime.utcnow(), 'done': True})
try:
self.client.put(entity)
except Exception as e:
print "GCD save failed with exception: %s" % e
return None
def get(self, table, key):
entity_key = self.client.key(table, key)
entity = None
try:
entity = self.client.get(entity_key)
except Exception as e:
print "GCD read failed with exception: %s" % e
if not entity:
return None
else:
return json.loads(entity['context'])
Tôi đang quan sát một số lượng lớn các đầu đọc/ghi thất bại với thông điệp "Các hoạt động đọc timed out"; > 5% thất bại hoàn toàn trái ngược với tài liệu đề cập đến tỷ lệ thất bại dự kiến là 1 trong 30K.
Câu hỏi của tôi sau đó là:
Có thể tăng thời gian chờ trong datastore.client.get và datastore.client.put cuộc gọi? Tôi không tìm kiếm câu trả lời dựa trên thử lại; đã cố gắng và không muốn chỉ phụ thuộc vào thử lại.
Có điều gì tôi nên làm khi tạo bảng hoặc thiết lập ứng dụng khách có thể giảm thiểu các lỗi hết thời gian chờ này không?
Tôi đọc ở đâu đó (https://github.com/GoogleCloudPlatform/gcloud-python/issues/1214) rằng gcloud Python sử dụng httplib2.Http không phải là luồng an toàn và có vấn đề thời gian chờ. Có cách nào để sử dụng gói yêu cầu Python (ổn định hơn) không?
Cảm ơn,
Khoảng cách thường xuyên được các cuộc gọi đến đặt() và get()? – Adam