EikonError: Error code 408 | UDF timeout occured. The operation was canceled.

Hi,

I get the following error while conducting a heavy loop:

image


The loop I am conducting looks like this:

image


I dívided the ~12,000 firms to groups of 500 to avoid the limit for 10,000 data points per search since I search with 17 fields/data items. How could I best implement the search to all of the 12,000 firms or fix the error occuring?

Many thanks for any advice!

Best Answer

  • chavalit-jintamalit
    Answer ✓

    Hi @CodeWave

    You can use try, except code block to handle error.

    try:
      df,err = ek.get_data(...)
    except ek.EikonError:
      //do something, perhaps retry the request again after some period of time

Answers

  • Hi,


    Ok. Thanks! But what is causing the problem so I can prevent the error in the first place? Meanwhile, I will try to make a try-expect structure to handle the issue.

  • Hi @CodeWave

    Have you tried adding a sleep() between each get_data() call?

    I am not an expert on the inner workings of the Eikon API, however, the trace you shared mentions server errors around when the json request is sent to the server.

  • There are a lot of possible factors such as network, service availability on server side, etc...

    So implementing try, except code block is safer.


    Please also note that there is a 5-requests-per-second limitation as well, (please review the API limitation document at this URL, https://developers.refinitiv.com/eikon-apis/eikon-data-api/docs?content=49692&type=documentation_item


  • Hi,

    Okay. Could you provide a short example or refer to a thread where there is an example provided of such a try-expect structure that works efficiently?

    Many thanks.

  • No, I had not tried. Thanks for the tip! I think i will try using a try-expect structure and also use sleep between each iteration for chunked firm lists. We'll see how that works out.

  • Hi @CodeWave

    The example to catch eikonError is provided, however how to handle it really depends on app developer to handle it in their app logic.

    This is an example

    gotData = False
    while not gotData:
        try:
            df,err = ek.get_data(...)
            gotData = True
        except ek.EikonError:
            time.sleep(3)