[SDKs] PySDK supports any Keep service type, using proxy replication logic for non-disk types
- The Python SDK Keep client will talk to all accessible Keep services, regardless of service type.
- The client will send the X-Keep-Desired-Replication header in all PUT requests, and respect the X-Keep-Replicas-Stored header in the response, regardless of service type (currently sends the request header only to proxies).
- The client only has one thread at a time writing to non-disk services: If there are any non-"disk" services in the "accessible" list, use ThreadLimiter(1).
Future work: Anticipate API server telling us max replication for each service, meanwhile say 1 for disks and 3 for others. Let a thread start writing only when
sum(max replication) < copies_todo, i.e., we will need to write more copies even if all currently writing threads succeed with max replication.
TBD: How should KeepClient choose a timeout for non-disk, non-proxy services?
#10 Updated by Tom Clegg over 5 years ago
Noneif we should use one thread per copy wanted
1if we should use 1 thread
Perhaps it would be easier to follow if we called it "maxReplicasPerService" and set it to 1 or None (None signifying "unknown")?
-(True != ks.get('read_only')) +not ks.get('read_only')