Support for typesense in Subdirectory ?
まだ誰も着手していません。
評価
調査の方向性
Start with the URL construction in typesense/api_call.py and the is_healthy entry point shown in typesense/operations.py. Reproduce the node configurations from the issue and inspect how path and port are combined. Done means subdirectory requests form the intended /search/health URL without misplacing the port, with verification for this configuration.
索引モデルが issue の本文から書いたものです。
説明
Description
Our installation scheme is to install typesense as a subdirectory, so the url is https://xxx.yyy.ch/search.
But with typesense-python I cannot connect. Restful (tested with Postman) it works.
Is there any explanation ?
Steps to reproduce
following config cannot connect (logfile below)
{
'api_key': _API_KEY,
'nodes': [{
'host': 'xxx.yyy.ch',
'port': '443',
'protocol': 'https',
'path': '/search'
}],
'connection_timeout_seconds': 2
}
And this config appends the port at wrong place [...] with url: /search:443/health
{
'api_key': _API_KEY,
'nodes': [{
'host': 'xxx.yyy.ch/search',
'port': '443',
'protocol': 'https'
}],
'connection_timeout_seconds': 2
}
Log
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): xxx.yyy.ch:443
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (2): xxx.yyy.ch:443
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (3): xxx.yyy.ch:443
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (4): xxx.yyy.ch:443
Traceback (most recent call last):
File "C:\bin\anaconda3\Lib\site-packages\urllib3\connectionpool.py", line 466, in _make_request
self._validate_conn(conn)
File "C:\bin\anaconda3\Lib\site-packages\urllib3\connectionpool.py", line 1095, in _validate_conn
conn.connect()
File "C:\bin\anaconda3\Lib\site-packages\urllib3\connection.py", line 652, in connect
sock_and_verified = _ssl_wrap_socket_and_match_hostname(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\bin\anaconda3\Lib\site-packages\urllib3\connection.py", line 805, in _ssl_wrap_socket_and_match_hostname
ssl_sock = ssl_wrap_socket(
^^^^^^^^^^^^^^^^
File "C:\bin\anaconda3\Lib\site-packages\urllib3\util\ssl_.py", line 465, in ssl_wrap_socket
ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\bin\anaconda3\Lib\site-packages\urllib3\util\ssl_.py", line 509, in _ssl_wrap_socket_impl
return ssl_context.wrap_socket(sock, server_hostname=server_hostname)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\bin\anaconda3\Lib\ssl.py", line 517, in wrap_socket
return self.sslsocket_class._create(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\bin\anaconda3\Lib\ssl.py", line 1104, in _create
self.do_handshake()
File "C:\bin\anaconda3\Lib\ssl.py", line 1382, in do_handshake
self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1006)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\bin\anaconda3\Lib\site-packages\urllib3\connectionpool.py", line 789, in urlopen
response = self._make_request(
^^^^^^^^^^^^^^^^^^^
File "C:\bin\anaconda3\Lib\site-packages\urllib3\connectionpool.py", line 490, in _make_request
raise new_e
urllib3.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1006)
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\bin\anaconda3\Lib\site-packages\requests\adapters.py", line 486, in send
resp = conn.urlopen(
^^^^^^^^^^^^^
File "C:\bin\anaconda3\Lib\site-packages\urllib3\connectionpool.py", line 843, in urlopen
retries = retries.increment(
^^^^^^^^^^^^^^^^^^
File "C:\bin\anaconda3\Lib\site-packages\urllib3\util\retry.py", line 519, in increment
raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='xxx.yyy.ch', port=443): Max retries exceeded with url: /search/health (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1006)')))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\data\_azure\tgdisearch\health.py", line 14, in <module>
is_healty(active_client)
File "C:\data\_azure\tgdisearch\health.py", line 10, in is_healty
health = client_object.operations.is_healthy()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\bin\anaconda3\Lib\site-packages\typesense\operations.py", line 22, in is_healthy
call_resp = self.api_call.get(Operations.HEALTH_PATH)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\bin\anaconda3\Lib\site-packages\typesense\api_call.py", line 146, in get
return self.make_request(session.get, endpoint, as_json,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\bin\anaconda3\Lib\site-packages\typesense\api_call.py", line 130, in make_request
raise last_exception
File "C:\bin\anaconda3\Lib\site-packages\typesense\api_call.py", line 101, in make_request
r = fn(url, headers={ApiCall.API_KEY_HEADER_NAME: self.config.api_key}, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\bin\anaconda3\Lib\site-packages\requests\sessions.py", line 602, in get
return self.request("GET", url, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\bin\anaconda3\Lib\site-packages\requests\sessions.py", line 589, in request
resp = self.send(prep, **send_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\bin\anaconda3\Lib\site-packages\requests\sessions.py", line 703, in send
r = adapter.send(request, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\bin\anaconda3\Lib\site-packages\requests\adapters.py", line 517, in send
raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='xxx.yyy.ch', port=443): Max retries exceeded with url: /search/health (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1006)')))
Metadata
version = '0.21.0'
- 主要言語
- Python
- スター
- 247
- フォーク
- 66
- 平均マージ
- 22時間 47分
- マージ済み PR(30日)
- 8
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
typesense/typesense-python のほかの issue
-
`MultiSearchResponse` type does not account for union search response shape対応中かも @tharropoulos が 172 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
typesense/typesense-python#128 ·
-
`documents.Documents.import_()` `batch_size` argument is ignored, type of `import_parameters` is missing `batch_size`対応中かも @tharropoulos が 245 日前に担当しました。 オープン
難易度 2/5 1〜2日 初心者へのやさしさ 68/100
typesense/typesense-python#124 ·
-
難易度 1/5 1時間未満 初心者へのやさしさ 68/100
typesense/typesense-python#100 ·
-
難易度 3/5 1〜2日 初心者へのやさしさ 35/100
typesense/typesense-python#122 · コメント 3 件 ·
-
[Bug] - DeprecationWarning on instantiation of Client対応中かも @tharropoulos が 266 日前に担当しました。 オープン
難易度 3/5 1〜2日 初心者へのやさしさ 55/100
typesense/typesense-python#114 · コメント 8 件 ·
typesense/typesense-python の issue をすべて見る
似ている issue
-
[Resource]: Loreオープンresource-submission validation-passed
難易度 1/5 1時間未満 初心者へのやさしさ 88/100
hesreallyhim/awesome-claude-code#3234 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
openminion/openminion#376 ·
メンテナーはふだん 1 日以内に返信
-
Type: ☹︎ Bug
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
posit-dev/great-tables#1028 ·
メンテナーはふだん 1 日以内に返信
-
integration: apple_tv
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
home-assistant/core#188282 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
A "since" range is worded as a career: "the past two seasons" says "regular season career (2025 on)"オープンP4: low
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
jeffknupp/association#538 ·