ReadTimeout error on query

Hi,

I am using Python client to connect with weaviate. Connect timeout is 30 sec and Read timeout is set to 600 sec. Weaviate class has ~70,000 objects.

where_filter is the query filter with AND operator based on 2 more class properties.

Here is the code snippet:

import weaviate

client = weaviate.Client(weaviate_url, **kwargs, timeout_config=(30, 600))
res = (
            self.client.query
            .get(class_name=self._class_name, properties=["video_id"])
            .with_where(where_filter.dict())
            .with_limit(1)
            .do()
        )

Here is the error:

File "weaviate_manager.py", line 359, in my_function
    .do()
  File "/home/airflow/.local/lib/python3.10/site-packages/weaviate/gql/get.py", line 1205, in do
    return super().do()
  File "/home/airflow/.local/lib/python3.10/site-packages/weaviate/gql/filter.py", line 76, in do
    response = self._connection.post(path="/graphql", weaviate_object={"query": query})
  File "/home/airflow/.local/lib/python3.10/site-packages/weaviate/connect/connection.py", line 427, in post
    return self._session.post(
  File "/home/airflow/.local/lib/python3.10/site-packages/requests/sessions.py", line 635, in post
    return self.request("POST", url, data=data, json=json, **kwargs)
  File "/home/airflow/.local/lib/python3.10/site-packages/requests/sessions.py", line 587, in request
    resp = self.send(prep, **send_kwargs)
  File "/home/airflow/.local/lib/python3.10/site-packages/requests/sessions.py", line 701, in send
    r = adapter.send(request, **kwargs)
  File "/home/airflow/.local/lib/python3.10/site-packages/requests/adapters.py", line 578, in send
    raise ReadTimeout(e, request=request)
requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='qwerty.c0.us-east1.gcp.weaviate.cloud', port=443): Read timed out. (read timeout=600)

Read timeout is quite high already. How do I fix this issue?

Hi @mahima-manik ! Welcome to our community :hugs:

The new version of the python client (2.26.2) has a fix for a bug that was affecting this:

What python client version are you using?

Hey @DudaNogueira, Thanks for your response.

I was using 3.18.0 and have updated to 3.26.2 now. In the error log, you can see that the timeout was thrown after 600 sec, so I believe the timeout is being honoured with both versions.

The problem still persists. What else I can try here?

Can you try that same filter using py v4?

Also, how big is that where_filter?

That is hosted in WCS, right? I would need to check the logs to understand it better.

Can you please open a support ticket? So we can follow on from there?

Thanks!

1 Like

Hi @DudaNogueira @mahima-manik ,I also faced the above issue in my current running weaviate-1.21.2 (not on WCS) at number of parallel requests even with
connectionpoolsize=40 and maxpoolsize=40. for very less number of parallel requests it works fine. it is fine if you share the exact root cause as well as solution :slightly_smiling_face:

1 Like

Yes, it is hosted in WCS. I have opened a support ticket (#43).

@Dharanish I will share the root cause and solution here once I have it :slight_smile:

1 Like

@Dharanish If you throttle or reduce the amount of data sent will it work fine?

This looks like a connection issue on load balancer due to the ammount of data sent.

AFAIK, Weaviate will ingest (or try to) whatever amount of data you throw at.

So reducing the amount of data may give it more time to process. That’s when the new ASYNC INDEX comes handy, as you first send all data, then Weaviate will ingest and index on a timely manner.