gpt4 book ai didi

python - 如何从其字符串表示创建 ObjectID [pyarrow]

转载 作者:行者123 更新时间:2023-12-04 10:34:50 25 4
gpt4 key购买 nike

我正在将一个 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 个字节,但我不确定如何从此 ID 中获取正确的 20 个字节。我尝试过类似 plasma.ObjectID(b'8d8e54e5cb547962a6d16ff2869c2c3282ff6550') 的事情无济于事。

我发现唯一有效的方法是列出商店中的所有对象,例如“client.list()”,然后在返回的字典中对 ObjectID 键的字符串表示进行字符串匹配。

如果我没有遵循预期的设计,我该如何:
  • 将 python 对象保存到服务器 1 中的 Plasma
  • 通过 HTTP 将引用从一台服务器传递到另一台服务器
  • 在服务器 2 中访问此对象?
  • 最佳答案

    找到了解决办法。打印的 ObjectID 是十六进制代码。您可以将其转换为字节,如下所示:

    # source
    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)"

    # client
    id_str = "8d8e54e5cb547962a6d16ff2869c2c3282ff6550"
    object = plasma.ObjectID(bytes.fromhex(id_str))
    data = client.get(object)

    关于python - 如何从其字符串表示创建 ObjectID [pyarrow],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60234607/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com