Weaviate 的 client.is_ready 引发异常而不是布尔值

问题描述 投票:0回答:0
typhon-2-model-typhon-data-1       | Traceback (most recent call last):
typhon-2-model-typhon-data-1       |   File "/root/typhon-markdown-data/app.py", line 97, in <module>
typhon-2-model-typhon-data-1       |     main()
typhon-2-model-typhon-data-1       |   File "/root/typhon-markdown-data/app.py", line 53, in main
typhon-2-model-typhon-data-1       |     client = Client("http://localhost:8088")
typhon-2-model-typhon-data-1       |   File "/usr/local/lib/python3.9/site-packages/weaviate/client.py", line 126, in __init__
typhon-2-model-typhon-data-1       |     self._connection = Connection(
typhon-2-model-typhon-data-1       |   File "/usr/local/lib/python3.9/site-packages/weaviate/connect/connection.py", line 533, in __init__
typhon-2-model-typhon-data-1       |     super().__init__(
typhon-2-model-typhon-data-1       |   File "/usr/local/lib/python3.9/site-packages/weaviate/connect/connection.py", line 112, in __init__
typhon-2-model-typhon-data-1       |     self.wait_for_weaviate(startup_period)
typhon-2-model-typhon-data-1       |   File "/usr/local/lib/python3.9/site-packages/weaviate/connect/connection.py", line 517, in wait_for_weaviate
typhon-2-model-typhon-data-1       |     raise WeaviateStartUpError(
typhon-2-model-typhon-data-1       | weaviate.exceptions.WeaviateStartUpError: Weaviate did not start up in 5 seconds. Either the Weaviate URL http://localhost:8088 is wrong or Weaivate did not start up in the interval given in 'startup_period'.
typhon-2-model-typhon-data-1 exited with code 1

当我试图调用

client.is_ready()
时,出现了异常,尽管根据文档它应该返回布尔值。

我还必须提到,我正在尝试使用 Docker 启动带有自定义 Transformers 模块的 Weaviate。我试图用他们的DEMO

复制容器来导入数据

我的 Weaviate 实例需要大约一分钟才能完成启动,直到 FastAPI 在机器中显示运行地址。

我知道 Weaviate 客户端有参数

startup_period
指定等待 Weaviate 完成启动的时间,我告诉它等待 90 秒,Weaviate 实例已经启动,FastAPI 的地址已经显示在 90 秒内秒,但问题仍然存在。

下面是导入片段。它与 DEMO 仓库中的完全一样。

def main():
    client = Client("http://localhost:8088", startup_period=90)
    
    wait_time_limit = 240
    while not client.is_ready():
        if not wait_time_limit:
            sys.stderr.write("\rTIMEOUT: Weaviate not ready. \
                            Try again or check if weaviate is running.\n")
            sys.exit(1)
        sys.stdout.write(
            f"\rWait for weaviate to get ready. {wait_time_limit:02d} seconds left.")
        sys.stdout.flush()
        wait_time_limit -= 2
        time.sleep(2.0)

所以我有了Weaviate实例容器,还有导入数据的容器。当我尝试使用 Docker Compose 运行两者时,它不起作用。但是,当我让 Weaviate 完成启动并在本地用 Python 运行导入数据代码时,它就可以工作了。

但我仍然不明白为什么

client.is_ready()
不起作用,尽管我在客户端实例化中指定了
startup_period

vector search-engine weaviate
© www.soinside.com 2019 - 2024. All rights reserved.