Connection Error: A connection attempt failed because the connected party did not properly respond after a period of time

33,808

Solution 1

Well, this is not the flask error, Its basically python socket error

as 10060 seems to be a timeout error, is it possible the server is very slow in accepting and if the website opens in your browser,then there is possibility your browser has higher timeout threshold?

try increasing request time in request.get()

if the remote server is also under your access then : You don't need to bind the socket (unless the remote server has an expectation of incoming socket) - it is extremely rare that this would actually be a requirement to connect.

Solution 2

I think this because steamcommunity's server unstable or some internet problem..

Usually,you can't fix the net shake.But there're still some methods can help u.

First,when you catch the net error,you let your thread sleep one seconds and then try again!

Second,I suggest u use Flask-Cache for this, such as cached 60 seconds,this will help u reduce http request.

Share:
33,808
Vishwa Iyer
Author by

Vishwa Iyer

I'm a coding master. Check out my iPhone app, A Great App for TF2: https://itunes.apple.com/us/app/a-great-app-for-tf2/id894439038?mt=8 This is a site I made to remove phishers and hackers off of Steam: https://www.steap.co

Updated on May 29, 2020

Comments

  • Vishwa Iyer
    Vishwa Iyer about 4 years

    I'm developing some software in python that utilizes Steam APIs. I'm using Flask to run and test the python code. Everything was going swell, but now I'm getting this error (I haven't changed any code):

    ('Connection aborted.', error(10060, 'A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond'))

    I have no idea why this error is coming up, because the code was working perfectly fine and suddenly the error comes up, and I haven't changed anything in the code or with my computer or Flask.

    The code:

    import urllib
    import itertools
    import urllib2
    import time
    from datetime import datetime
    from bs4 import BeautifulSoup
    from flask import Flask
    import requests
    import json
    import xml.etree.ElementTree as ET
    from xml.dom.minidom import parseString
    import sys
    
    
    app = Flask(__name__)
    API_KEY = 'XXX'
    API_BASEURL = 'http://api.steampowered.com/'
    API_GET_FRIENDS = API_BASEURL + 'ISteamUser/GetFriendList/v0001/?key='+API_KEY+'&steamid='
    API_GET_SUMMARIES = API_BASEURL + 'ISteamUser/GetPlayerSummaries/v0002/?key='+API_KEY+'&steamids='
    PROFILE_URL = 'http://steamcommunity.com/profiles/'
    steamIDs = []
    myFriends = []
    
    class steamUser:
        def __init__(self, name, steamid, isPhisher):
            self.name = name
            self.steamid = steamid
            self.isPhisher = isPhisher
    
        def setPhisherStatus(self, phisher):
            self.isPhisher = phisher
    
    @app.route('/DeterminePhisher/<steamid>')
    def getFriendList(steamid):
        try:
            r = requests.get(API_GET_FRIENDS+steamid)
            data = r.json()
            for friend in data['friendslist']['friends']:
                steamIDs.append(friend['steamid'])
            return isPhisher(steamIDs)
        except requests.exceptions.ConnectionError as e:
            return str(e.message)
    
    def isPhisher(ids):
        phisherusers = ''
        for l in chunksiter(ids, 50):
            sids = ','.join(map(str, l))
            try:
                r = requests.get(API_GET_SUMMARIES+sids)
                data = r.json();
                for i in range(len(data['response']['players'])):
                    steamFriend = data['response']['players'][i]
                    n = steamUser(steamFriend['personaname'], steamFriend['steamid'], False)
                    if steamFriend['communityvisibilitystate'] and not steamFriend['personastate']:
                        url =  PROFILE_URL+steamFriend['steamid']+'?xml=1'
                        dat = requests.get(url)
                        if 'profilestate' not in steamFriend:
                            n.setPhisherStatus(True);
                            phisherusers = (phisherusers + ('%s is a phisher' % n.name) + ', ')
                        if parseString(dat.text.encode('utf8')).getElementsByTagName('privacyState'):
                            privacy = str(parseString(dat.text.encode('utf-8')).getElementsByTagName('privacyState')[0].firstChild.wholeText)
                            if (privacy == 'private'):
                                n.setPhisherStatus(True)
                                phisherusers = (phisherusers + ('%s is a phisher' % n.name) + ', ')
                    elif 'profilestate' not in steamFriend:
                        n.setPhisherStatus(True);
                        phisherusers = (phisherusers + ('%s is a phisher' % n.name) + ', ')
                    else:
                        steamprofile = BeautifulSoup(urllib.urlopen(PROFILE_URL+steamFriend['steamid']).read())
                        for row in steamprofile('div', {'class': 'commentthread_comment  '}):
                            comment = row.find_all('div', 'commentthread_comment_text')[0].get_text().lower()
                            if ('phisher' in comment) or ('scammer' in comment):
                                n.setPhisherStatus(True)
                                phisherusers = (phisherusers + ('%s is a phisher' % n.name) + ', ')
                    myFriends.append(n);
            except requests.exceptions.ConnectionError as e:
                return str(e.message)
            except:
                return "Unexpected error:", sys.exc_info()[0]
        return phisherusers
    
    def chunksiter(l, chunks):
        i,j,n = 0,0,0
        rl = []
        while n < len(l)/chunks:        
            rl.append(l[i:j+chunks])        
            i+=chunks
            j+=j+chunks        
            n+=1
        return iter(rl)
    
    app.run(debug=True)
    

    I would like to have an explanation of what the error means, and why this is happening. Thanks in advance. I really appreciate the help.