可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I am writing python to crawl Twitter space using Twitter-py. I have set the crawler to sleep for a while (2 seconds) between each request to api.twitter.com. However, after some times of running (around 1), when the Twitter's rate limit not exceeded yet, I got this error.
[Errno 10054] An existing connection was forcibly closed by the remote host.
What are possible causes of this problem and how to solve this?
I have searched through and found that the Twitter server itself may force to close the connection due to many requests.
Thank you very much in advance.
回答1:
This can be caused by the two sides of the connection disagreeing over whether the connection timed out or not during a keepalive. (Your code tries to reused the connection just as the server is closing it because it has been idle for too long.) You should basically just retry the operation over a new connection. (I'm surprised your library doesn't do this automatically.)
回答2:
there are many causes such as
- The network link between server and client may be temporarily going down.
- running out of system resources.
- sending malformed data.
To examine the problem in detail, you can use Wireshark.
or you can just re-request or re-connect again.
回答3:
For me this problem arised while trying to connect to the SAP Hana database. When I got this error,
OperationalError: Lost connection to HANA server (ConnectionResetError(10054, 'An existing connection was forcibly closed by the remote host', None, 10054, None))
I tried to run the code for connection(mentioned below), which created that error, again and it worked.
import pyhdb connection = pyhdb.connect(host="example.com",port=30015,user="user",password="secret") cursor = connection.cursor() cursor.execute("SELECT 'Hello Python World' FROM DUMMY") cursor.fetchone() connection.close() It was because the server refused to connect. It might require you to wait for a while and try again. Try closing the Hana Studio by logging off and then logging in again. Keep running the code for a number of times.