SiftScience / sift-python

Sift API (Python client)
MIT License
20 stars 23 forks source link

sift.client.ApiException: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer')) #82

Open ashwinv11 opened 2 years ago

ashwinv11 commented 2 years ago

Hello there!

We're seeing some 104 Connection Reset errors from the v205 Events POST endpoint. We're using version 5.0.1 of the SDK. It looks like this is an issue with the underlying calls to requests. Is this a known issue? What's the best way to handle these exceptions?

Thanks!

vincent-sift commented 2 years ago

Hello @ashwinv11 thanks for letting use know.

  1. Can you provide some more context on the issues that you are encountering?
  2. What is the name of the customer that you are integrating?
  3. What is your error rate?

Thanks :)

StevenLudwig commented 2 years ago

Hello! I have the same problem, we are using asynchronous microservices where we are tracking events with Sift sdk with python language, I am controlling the problem with a retry when it fails but the error rate is very high. It looks like the sift sdk is not 'ready' and keeps crashing when still being used... the error trace is coming from the sift sdk connection layer

vincent-sift commented 2 years ago

Thanks @StevenLudwig we are investigating this issue.

ashwinv11 commented 2 years ago

Hi @vincent-sift just reached out to support with some additional information. Thanks!

vincent-sift commented 2 years ago

Thanks @ashwinv11. I am following up with the engineering team as well.

ashwinv11 commented 2 years ago

Hi there, is there any update on this one? 🙏🏾 Are there any recommendations on how to handle this until it's fixed? Should we be retrying API calls if we get this error?

vincent-sift commented 2 years ago

@ashwinv11 we are working on getting this work scheduled. Our current suggestion is to retry these requests when you get these exceptions. Thanks for your patience.

ashwinv11 commented 1 year ago

Hey @vincent-sift any update on this?

viaskal-sift commented 1 year ago

@ashwinv11 a few questions:

  1. Which version of Python do you use?
  2. Please, provide a code snippet of how they init a Sift client in the Python code (without credentials)
  3. Do you create a session object manually, or use the Sift's default one? If you create Session by your own please provide a code snippet or parameters. Also, do you use own timeout or rely on the Sift's default one (2 sec)?
  4. What is the exactly version of requests lib?
  5. Do you use any proxy when calling Sift?

Thanks!

ashwinv11 commented 1 year ago

Hey @viaskal-sift sure!

Python version – 3.9.16 Requests lib version – 2.25.1

Here's an example of how we have it setup. Looks like we set a longer timeout than the default, and don't build the session object manually. We don't use any proxy when calling Sift.

import sift

client = sift.Client(SIFT_SCIENCE_API_KEY, timeout=3)

def send_to_sift(data):
    try:
        response = client.track('$create_order', data, return_workflow_status=True)
        if response and not response.is_ok():
            logger.error('...')
    except Exception:
        logger.exception('..')
        return None
    return response

Hope this helps!

viaskal-sift commented 1 year ago

@ashwinv11 Could you pls try to add some pre-configuration before creating a Sift Client using the code snipped below? Basically, it will configure the Session object particularly and only for the Sift Client, and only requests to the Sift API will be affected by that.

session = requests.Session()
adapter = HTTPAdapter(max_retries=3, pool_connections=5, pool_maxsize=5)
session.mount("https://", adapter)

session.timeout = timeout.Timeout(total=10, connect=10, read=10)
client = sift.Client(api_key=API_KEY, session=session)
viaskal-sift commented 1 year ago

@ashwinv11 did you have a chance to try this one? Thanks!

stephenflynn commented 1 year ago

@ashwinv11 did you have a chance to try this one? Thanks!

Hi Viaskal, we're hoping to tackle this guy soon.

viaskal-sift commented 1 year ago

@stephenflynn any updates from your side?

jmdsifty commented 1 year ago

@ashwinv11 did you have a chance to try this one? Thanks!

Hi Viaskal, we're hoping to tackle this guy soon.

Hi @stephenflynn wanted to check if @viaskal-sift 's recommendation was able to resolve the issue? Thank you!