Hi, I am getting below mentioned errors when i call kite.orders() functions to retrieve orderbook.
Traceback (most recent call last): File "C:\python\lib\site-packages\urllib3\connection.py", line 160, in _new_conn (self._dns_host, self.port), self.timeout, **extra_kw) File "C:\python\lib\site-packages\urllib3\util\connection.py", line 57, in create_connection for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): File "C:\python\lib\socket.py", line 748, in getaddrinfo for res in _socket.getaddrinfo(host, port, family, type, proto, flags): socket.gaierror: [Errno 11002] getaddrinfo failed
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "C:\python\lib\site-packages\urllib3\connectionpool.py", line 603, in urlopen chunked=chunked) File "C:\python\lib\site-packages\urllib3\connectionpool.py", line 344, in _make_request self._validate_conn(conn) File "C:\python\lib\site-packages\urllib3\connectionpool.py", line 843, in _validate_conn conn.connect() File "C:\python\lib\site-packages\urllib3\connection.py", line 316, in connect conn = self._new_conn() File "C:\python\lib\site-packages\urllib3\connection.py", line 169, in _new_conn self, "Failed to establish a new connection: %s" % e) urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 11002] getaddrinfo failed
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "C:\python\lib\site-packages\requests\adapters.py", line 449, in send timeout=timeout File "C:\python\lib\site-packages\urllib3\connectionpool.py", line 641, in urlopen _stacktrace=sys.exc_info()[2]) File "C:\python\lib\site-packages\urllib3\util\retry.py", line 399, in increment raise MaxRetryError(_pool, url, error or ResponseError(cause)) urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='api.kite.trade', port=443): Max retries exceeded with url: /orders (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 11002] getaddrinfo failed'))
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "orderbook.py", line 16, in ko=kite.orders() File "C:\python\lib\site-packages\kiteconnect-3.7.7-py3.7.egg\kiteconnect\connect.py", line 379, in orders File "C:\python\lib\site-packages\kiteconnect-3.7.7-py3.7.egg\kiteconnect\connect.py", line 697, in _get File "C:\python\lib\site-packages\kiteconnect-3.7.7-py3.7.egg\kiteconnect\connect.py", line 745, in _request File "C:\python\lib\site-packages\kiteconnect-3.7.7-py3.7.egg\kiteconnect\connect.py", line 742, in _request File "C:\python\lib\site-packages\requests\api.py", line 60, in request return session.request(method=method, url=url, **kwargs) File "C:\python\lib\site-packages\requests\sessions.py", line 533, in request resp = self.send(prep, **send_kwargs) File "C:\python\lib\site-packages\requests\sessions.py", line 646, in send r = adapter.send(request, **kwargs) File "C:\python\lib\site-packages\requests\adapters.py", line 516, in send raise ConnectionError(e, request=request) requests.exceptions.ConnectionError: HTTPSConnectionPool(host='api.kite.trade', port=443): Max retries exceeded with url: /orders (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 11002] getaddrinfo failed'))
Also, from the exception log it could be seen that most of these errors are raised between 12:00 Noon to 3:00 PM from past 3 days(market open days).
My algo places BO depending on test condition and may exit order based on its own RMS if SL is not reached. So, I need to access orderbook to know which SL is still not triggered.
It is not my internet specific error as ticks could be received for that period.
Is there any specific reason why OMS is down in these hours? Any other way to access orderbook when such error occur?
@Aakash369 Does this ConnectionError happens for all the order book fetch requests made between specified time or only few requests are failing? In case of ConnectionError, you can handle the exception at your end and retry the same request again.
Yesterday, it occurred for 8 of 13 orderbook fetch requests starting around 12:45 PM. I understand that I need to handle ConnectionError exception at my end and retry. And thats what the algo does. It retries four times before proceeding to next section of code.
Below is the results from one such attempt (update_order() is a function that is trying to access order book) :
2019-11-27 12:45:11.489378 exception error raised in update order HTTPSConnectionPool(host='api.kite.trade', port=443): Max retries exceeded with url: /orders (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 11001] getaddrinfo failed')) 2019-11-27 12:45:11.489378 recalling function
2019-11-27 12:45:23.875384 exception error raised in update order HTTPSConnectionPool(host='api.kite.trade', port=443): Max retries exceeded with url: /orders (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 11001] getaddrinfo failed')) 2019-11-27 12:45:23.875384 recalling function
2019-11-27 12:45:29.456803 exception error raised in update order HTTPSConnectionPool(host='api.kite.trade', port=443): Max retries exceeded with url: /orders (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 11002] getaddrinfo failed')) 2019-11-27 12:45:29.456803 recalling function
2019-11-27 12:45:41.840117 exception error raised in update order HTTPSConnectionPool(host='api.kite.trade', port=443): Max retries exceeded with url: /orders (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 11001] getaddrinfo failed')) 2019-11-27 12:45:41.840117 recalling function
As you can see in the timestamp, this error is persistent.
Can zerodha cross-check status of OMS at the above timestamps? I have also mailed other time stamps for the day to [email protected].
I am also not sure why there is a time gap between these re-tries. Ideally, the algo should retry at internals of 0.35 sec just like it did on 26-11-2019 as shown below:
2019-11-26 13:29:59.924001 exception error raised in update order 2019-11-26 13:29:59.924001 recalling update function 2019-11-26 13:30:00.293755 exception error raised in update order 2019-11-26 13:30:00.293755 recalling update function 2019-11-26 13:30:00.654896 exception error raised in update order 2019-11-26 13:30:00.654896 recalling update function 2019-11-26 13:30:01.008921 exception error raised in update order 2019-11-26 13:30:01.008921 recalling update function
Can you switch to some other ISP and give it a try? We haven't observed any issues like this and 8 requests failing out of 13 requests is a huge drop rate. If we had an issue like this then it would be chaotic.
I get these too, don't worry, if you have an exception handling system to retry the call, it'll most likely work. Most likely just normal network inefficiencies
I have mentioned 12:00 Noon to 3:00 PM i.e. market hours
Does this ConnectionError happens for all the order book fetch requests made between specified time or only few requests are failing?
In case of ConnectionError, you can handle the exception at your end and retry the same request again.
Below is the results from one such attempt (update_order() is a function that is trying to access order book) :
2019-11-27 12:45:11.489378 exception error raised in update order HTTPSConnectionPool(host='api.kite.trade', port=443): Max retries exceeded with url: /orders (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 11001] getaddrinfo failed'))
2019-11-27 12:45:11.489378 recalling function
2019-11-27 12:45:23.875384 exception error raised in update order HTTPSConnectionPool(host='api.kite.trade', port=443): Max retries exceeded with url: /orders (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 11001] getaddrinfo failed'))
2019-11-27 12:45:23.875384 recalling function
2019-11-27 12:45:29.456803 exception error raised in update order HTTPSConnectionPool(host='api.kite.trade', port=443): Max retries exceeded with url: /orders (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 11002] getaddrinfo failed'))
2019-11-27 12:45:29.456803 recalling function
2019-11-27 12:45:41.840117 exception error raised in update order HTTPSConnectionPool(host='api.kite.trade', port=443): Max retries exceeded with url: /orders (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 11001] getaddrinfo failed'))
2019-11-27 12:45:41.840117 recalling function
As you can see in the timestamp, this error is persistent.
Can zerodha cross-check status of OMS at the above timestamps? I have also mailed other time stamps for the day to [email protected].
I am also not sure why there is a time gap between these re-tries. Ideally, the algo should retry at internals of 0.35 sec just like it did on 26-11-2019 as shown below:
2019-11-26 13:29:59.924001 exception error raised in update order
2019-11-26 13:29:59.924001 recalling update function
2019-11-26 13:30:00.293755 exception error raised in update order
2019-11-26 13:30:00.293755 recalling update function
2019-11-26 13:30:00.654896 exception error raised in update order
2019-11-26 13:30:00.654896 recalling update function
2019-11-26 13:30:01.008921 exception error raised in update order
2019-11-26 13:30:01.008921 recalling update function
We haven't observed any issues like this and 8 requests failing out of 13 requests is a huge drop rate.
If we had an issue like this then it would be chaotic.
But if the algo can receive ticks for the particular time when error is raised, can it still be an ISP issue?
I am on a 100 MB/s broadband connection with a ping of 7msec most of the time.
I have attached two files:
1) ticks received for yesterday. It shows that internet worked when the error was raised.
2) Log file for yesterday
It would be great help if you could go through these and let me know what could be the possible root cause.