python 在Opensearch搜索方法中设置超时时出错

dvtswwa3  于 2023-09-29  发布在  Python
关注(0)|答案(2)|浏览(114)

我使用Opensearch-py来处理与OpenSearch的交互。然而,我在设置超时以修复搜索索引时的超时问题时遇到了一些问题。

self.get_client().search(
        index=index,
        body=search_body,
        scroll=scroll,
        ignore=ignore,
        size=size,
        timeout=30)

我得到的错误:
ValueError:连接的超时值为30.0,但它必须是int、float或None。
我很难理解为什么30不解析为int。我还尝试了“30”,“30 s”,30.0和使用int()和float()的强制转换。同样的错误。

Traceback (most recent call last):
  File "/usr/src/app/opensearchpy/connection/http_requests.py", line 179, in perform_request
    response = self.session.send(prepared_request, **send_kwargs)
  File "/usr/src/app/requests/sessions.py", line 618, in send
    r = adapter.send(request, **kwargs)
  File "/usr/src/app/requests/adapters.py", line 426, in send
    timeout = TimeoutSauce(connect=timeout, read=timeout)
  File "/usr/src/app/urllib3/util/timeout.py", line 94, in __init__
    self._connect = self._validate_timeout(connect, 'connect')
  File "/usr/src/app/urllib3/util/timeout.py", line 135, in _validate_timeout
    raise ValueError("Timeout value %s was %s, but it must be an "
ValueError: Timeout value connect was 30.0, but it must be an int, float or None.
mm9b1k5b

mm9b1k5b1#

根据文档,params是查询参数的“字典”。因此,下面的实现将起作用。

search(
 index=index,
       body=search_body,
       params={
         "timeout":30, 
         "scroll": scroll, 
         "ignore": ignore, 
         "size": size
       }
)
41zrol4v

41zrol4v2#

也有同样的问题没有直接修复,但找到了一个解决方案:可以在OpenSearch构造函数中传递timeout参数。

相关问题