I tried to download the tagged images using Custom Vision API and in Python. I set the limit to 256 images. However, after 60-90 images, this error would show up:
[Errno 10054] An existing connection was forcibly closed by the remote host
This is my code. I have edited out the project id and training key as I think this is private information.
@Nam Ly
The above code seems to be keeping the connection open until the processing is done for all the images on the client side. Could you try to close the connection after the response from the API i.e after
data = response.read().decode(encoding)
?
I think since the connection is open until all your images or items are processed on client side in the for loop the API is closing the connection after the default limit.
The initial response object should contain all the image details from the API, could you consider to print this response and check if the later processing is the issue?
Increasing the time out on your
http.client
call is an option but that can still keep the connection open for a long time until all images in the response object are processed.
I added
conn.close
after
data = response.read().decode(encoding)
. It is the later processing that is the issue.
I did a google search regarding
urlretrieve()
and
[Errno 10054] An existing connection was forcibly closed by the remote host
. There is a solution that add edthe proxy to urllib.request. That seems to work for now. I do not know why this is the case though.
Thanks for the updates. The solution for proxy in the SO threads seem to be around setting up their proxy server because the corp network used by user needed one. If you are using a proxy network then you can also set one instead of localhost.
For the new error though, i think it would be easier to debug by printing the URL being called to check if the cleanup of URL retrieve is working as expected or you could try using
urllib.request.urlcleanup()
to ensure there is no stale data between calls for different images.