Я сохраняю объект Python в хранилище Plasma в одном клиенте и хочу загрузить его в другом. Моя идея состояла в том, чтобы передать ObjectID как часть HTTP-запроса. Поэтому у меня есть что-то вроде:
import pyarrow.plasma as plasma
client = plasma.connect("/tmp/plasma")
payload = {"a": 1}
object_id = client.put(payload)
object_str = str(object_id)
print(object_str) # outputs: "ObjectID(8d8e54e5cb547962a6d16ff2869c2c3282ff6550)"
В моем клиенте-получателе я ожидал, что смогу сделать что-то вроде:
import pyarrow.plasma as plasma
client = plasma.connect("/tmp/plasma")
data = client.get("8d8e54e5cb547962a6d16ff2869c2c3282ff6550")
Но это не работает, так как client.get
ожидает объект plasma.ObjectID
, а не строковый идентификатор. Но тогда я не могу найти способ создать объект plasma.ObjectID
, используя этот идентификатор. Там написано, что мне нужно передать 20 байтов, но я не уверен, как получить правильные 20 байтов из этого идентификатора. Я пробовал такие вещи, как plasma.ObjectID(b'8d8e54e5cb547962a6d16ff2869c2c3282ff6550')
, но безрезультатно.
Единственное, что я нашел, что работает, это хакерское решение перечисления всех объектов в магазине, как "client.list ()", а затем Соответствие строки строковому представлению ключей ObjectID в возвращенном словаре.
Если я не следую предполагаемому дизайну, как мне:
- сохранить объект python в Plasma на сервере 1
- передать ссылку по HTTP с одного сервера на другой
- получить доступ к этому объекту на сервере 2?