Sometimes when we get fundamental data via the Dex2 API, we get DS_DE_NULL_ERROR back, usually with either the text "Asynchronous Query library internal error" or "Server response is not valid." This happens seemingly at random, usually after at least a minute has passed-- possibly a timeout from upstream.
Usually when we get fundamental data we get it for our whole portfolio of 1,000 stocks (we're quants). In general when we receive the above messages our strategy has been to try to resend the request right away, usually breaking it into more, but smaller, requests. However, sometimes, that results in further errors, including "DS_DE_NULL_ERROR: Too many long-running requests were detected."
Is there a standard suggestion for what's the best way to package requests of data to the Eikon COM API? Is there an optimal time to wait after receiving a DS_DE_NULL_ERROR response before retrying the request? Is there an optimal size for an individual request to avoid timeouts in the first place? Any suggestions would be appreciated.
I'm afraid there's no such thing as an optimal size of the request. Or rather the optimal size can only be determined empirically and it will likely vary depending on the type of the request. Generally you want to avoid sending requests that take longer than a minute to process. It's better to break such requests into smaller ones by splitting either the instrument list or the fields list, or both. The error "Too many long-running requests were detected" is returned when the backend detects a number of requests from you taking more than 5 minutes each to process. When this happens the backend will stop process any requests from your Eikon account for a period of time.