Configurations#

There are some configurations that you can set for working with the Encord SDK.

Network configurations#

If you have an unstable connection, sometimes you might want to overwrite the defaults of the RequestsSettings. These settings will propagate to the Project and Dataset objects that are created from the EncordUserClient.

from encord import EncordUserClient
from encord.http.constants import RequestsSettings

user_client: EncordUserClient = EncordUserClient.create_with_ssh_private_key(
    "<your_private_key>",
    requests_settings=RequestsSettings(max_retries=7),
)

You can also overwrite the timeouts for reads and writes. To overwrite the read, write, and connect timeout you can do the following:

from encord import Dataset, EncordUserClient
from encord.client import EncordClientDataset

user_client: EncordUserClient = EncordUserClient.create_with_ssh_private_key(
    "<your_private_key>",
)

NEW_TIMEOUT = 300  # seconds

# For user_client requests specifically. These will NOT automatically
# propagate to the Dataset or Project objects
user_client.user_config.read_timeout = NEW_TIMEOUT
user_client.user_config.write_timeout = NEW_TIMEOUT
user_client.user_config.connect_timeout = NEW_TIMEOUT

# The same procedure works for the Project class that is returned from
# `user_client.get_project("<project_hash>")
dataset: Dataset = user_client.get_dataset("<dataset_hash>")
dataset._client._config.read_timeout = NEW_TIMEOUT
dataset._client._config.write_timeout = NEW_TIMEOUT
dataset._client._config.connect_timeout = NEW_TIMEOUT

# If you are using the deprecated EncordClientDataset instead
dataset_client: EncordClientDataset = user_client.get_dataset_client(
    "<dataset_hash>"
)
dataset_client._config.read_timeout = NEW_TIMEOUT
dataset_client._config.write_timeout = NEW_TIMEOUT
dataset_client._config.connect_timeout = NEW_TIMEOUT