Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python请求ssl[Errno 1]\u ssl.c:1428:error:1408F10B:ssl例程:SSL3\u GET\u记录:错误的版本号_Python_Ssl_Python Requests - Fatal编程技术网

Python请求ssl[Errno 1]\u ssl.c:1428:error:1408F10B:ssl例程:SSL3\u GET\u记录:错误的版本号

Python请求ssl[Errno 1]\u ssl.c:1428:error:1408F10B:ssl例程:SSL3\u GET\u记录:错误的版本号,python,ssl,python-requests,Python,Ssl,Python Requests,我正在使用请求模块创建一个python应用程序。我最近添加了多处理来提高速度,但我开始出现一些奇怪的错误,比如[Errno 1]\u ssl.c:1428:error:1408F10B:ssl例程:SSL3\u get\u记录:错误的版本号或[Errno 1]\u ssl.c:1428:error:1408F119:ssl例程:SSL3\u get\u记录:解密失败或坏记录mac。 代码如下所示: def hometables_one(conn, request, s, hostname, pa

我正在使用请求模块创建一个python应用程序。我最近添加了多处理来提高速度,但我开始出现一些奇怪的错误,比如
[Errno 1]\u ssl.c:1428:error:1408F10B:ssl例程:SSL3\u get\u记录:错误的版本号
[Errno 1]\u ssl.c:1428:error:1408F119:ssl例程:SSL3\u get\u记录:解密失败或坏记录mac
。 代码如下所示:

def hometables_one(conn, request, s, hostname, payload, company):
    date1 = request.query.get('date1', '')      
    date2 = request.query.get('date2', '')

    prijmyCelk = 0;
    vydajeCelk = 0;
    neuhrPrijCelk = 0;
    neuhrVydCelk = 0;
    dph = 0;
    dbNazev = company['dbNazev'];
    nazev = company['nazev'];

    if date1 and date2:
        try:
            r = s.get("%s/c/%s/faktura-vydana/(duzpPuv between %s %s)/$sum.json" % (hostname, dbNazev, date1[0], date2[0]), params=payload, verify=False)
            r.raise_for_status()
        except requests.exceptions.RequestException as err:
            #response.write(ujson.dumps({ "success": False, "errors": { "reason": str(err)}}))
            #return response
            conn.send({ "success": False, "errors": { "reason": str(err)}})
            conn.close()
            return None

    else:
        try:
            r = s.get("%s/c/%s/faktura-vydana/$sum.json" % (hostname, dbNazev), params=payload, verify=False)
            r.raise_for_status()
        except requests.exceptions.RequestException as err:
            #response.write(ujson.dumps({ "success": False, "errors": { "reason": str(err)}}))
            #return response
            conn.send({ "success": False, "errors": { "reason": str(err)}})
            conn.close()
            return None

    obj_vydana = r.json()
    data_vydana = obj_vydana['winstrom']['sum']['sumDoklUcetni']['values']
    prijmyCelk = float(data_vydana['sumDoklCelkem']['value'])
    neuhrVydCelk = float(data_vydana['sumDoklZbyvaUh']['value'])
    dph_vydane = float(data_vydana['sumDoklDphCelk']['value'])


    if date1 and date2:
        try:
            r = s.get("%s/c/%s/faktura-prijata/(duzpPuv between %s %s)/$sum.json" % (hostname, dbNazev, date1[0], date2[0]), params=payload, verify=False)
            r.raise_for_status()
        except requests.exceptions.RequestException as err:
            #response.write(ujson.dumps({ "success": False, "errors": { "reason": str(err)}}))
            #return response
            conn.send({ "success": False, "errors": { "reason": str(err)}})
            conn.close()
            return None

    else:
        try:
            r = s.get("%s/c/%s/faktura-prijata/$sum.json" % (hostname, dbNazev), params=payload, verify=False)
            r.raise_for_status()
        except requests.exceptions.RequestException as err:
            #response.write(ujson.dumps({ "success": False, "errors": { "reason": str(err)}}))
            #return response
            conn.send({ "success": False, "errors": { "reason": str(err)}})
            conn.close()
            return None

    obj_prijata = r.json();
    data_prijata = obj_prijata['winstrom']['sum']['sumDoklUcetni']['values']
    vydajeCelk = float(data_prijata['sumDoklCelkem']['value'])
    neuhrPrijCelk = float(data_prijata['sumDoklZbyvaUh']['value'])
    dph_prijate = float(data_prijata['sumDoklDphCelk']['value'])

    if prijmyCelk != 0:
        result = {
            "corporation": nazev,
            "dbName": dbNazev,
            "prijmyCelk": "%s €" % prijmyCelk,
            "nakladyCelk": "%s €" % vydajeCelk,
            "ziskCelk": "%s €" % (prijmyCelk-vydajeCelk),
            "marzaCelk": ((prijmyCelk-vydajeCelk)/prijmyCelk*100),
            "neuhrVydCelk": "%s €" % neuhrVydCelk,
            "neuhrPrijCelk": "%s €" % neuhrPrijCelk,
            "dph": "%s €" % (dph_vydane-dph_prijate),
        }
    else:
        result = {
            "corporation": nazev,
            "dbName": dbNazev,
            "prijmyCelk": "%s €" % prijmyCelk,
            "nakladyCelk": "%s €" % vydajeCelk,
            "ziskCelk": "%s €" % (prijmyCelk-vydajeCelk),
            "marzaCelk": 0,
            "neuhrVydCelk": "%s €" % neuhrVydCelk,
            "neuhrPrijCelk": "%s €" % neuhrPrijCelk,
            "dph": "%s €" % (dph_vydane-dph_prijate),
        }
    conn.send(result)
    conn.close()
    return None
#####################################################################################

def hometables(request):
    s = requests.Session()
    response = HTTPResponse()
    hostname = request.query.get('hostname', '')[0]
    auth = request.query.get('auth', '')[0]
    p_queue = []
    result = []

    json_r = {"success": True}
    payload = {'authSessionId': request.query.get('auth', '')[0]}
    try:
        r = s.get("%s/c.json" % hostname, params=payload, verify=False)
        r.raise_for_status()
    except requests.exceptions.RequestException as err:
        response.write(ujson.dumps({ "success": False, "errors": { "reason": str(err)}}))
        return response

    obj = r.json()
    data = obj['companies']['company']
    data = make_list(data)

    parent_conn, child_conn = Pipe()
    for company in data:
        p_queue.append(Process(target=hometables_one, args=(child_conn, request, s, hostname, payload, company))) #create a new process with hometables_one function
        p_queue[-1].start()

    for p in p_queue:
        received_data = parent_conn.recv()
        if "success" not in received_data:
            result.append(received_data)s
            p.join()
        else:
            response.write(ujson.dumps(received_data)) #error in hometables_one function
            return response

    json_r["data"] = result
    response.write(ujson.dumps(json_r))
    return response
[{"createDt":"2014-01-28T00:00:00+01:00","dbNazev":"sveatlo","id":"4","licenseGroup":"null","nazev":"Sveatlo","show":"true","stavEnum":"ESTABLISHED","watchingChanges":"false"}]
[{"createDt":"2014-01-28T00:00:00+01:00","dbNazev":"sveatlo","id":"4","licenseGroup":"null","nazev":"Sveatlo","show":"true","stavEnum":"ESTABLISHED","watchingChanges":"false"},{"createDt":"2014-01-28T00:00:00+01:00","dbNazev":"sveatlo1","id":"4","licenseGroup":"null","nazev":"Sveatlo1","show":"true","stavEnum":"ESTABLISHED","watchingChanges":"false"}]
在这部分

    try:
        r = s.get("%s/c.json" % hostname, params=payload, verify=False)
        r.raise_for_status()
    except requests.exceptions.RequestException as err:
        response.write(ujson.dumps({ "success": False, "errors": { "reason": str(err)}}))
        return response

    obj = r.json()
    data = obj['companies']['company']
            data = make_list(data)
我得到一个JSON请求,请求系统中当前所有的公司,然后我为每个公司运行hometables\u函数。最后的
数据可能如下所示:

def hometables_one(conn, request, s, hostname, payload, company):
    date1 = request.query.get('date1', '')      
    date2 = request.query.get('date2', '')

    prijmyCelk = 0;
    vydajeCelk = 0;
    neuhrPrijCelk = 0;
    neuhrVydCelk = 0;
    dph = 0;
    dbNazev = company['dbNazev'];
    nazev = company['nazev'];

    if date1 and date2:
        try:
            r = s.get("%s/c/%s/faktura-vydana/(duzpPuv between %s %s)/$sum.json" % (hostname, dbNazev, date1[0], date2[0]), params=payload, verify=False)
            r.raise_for_status()
        except requests.exceptions.RequestException as err:
            #response.write(ujson.dumps({ "success": False, "errors": { "reason": str(err)}}))
            #return response
            conn.send({ "success": False, "errors": { "reason": str(err)}})
            conn.close()
            return None

    else:
        try:
            r = s.get("%s/c/%s/faktura-vydana/$sum.json" % (hostname, dbNazev), params=payload, verify=False)
            r.raise_for_status()
        except requests.exceptions.RequestException as err:
            #response.write(ujson.dumps({ "success": False, "errors": { "reason": str(err)}}))
            #return response
            conn.send({ "success": False, "errors": { "reason": str(err)}})
            conn.close()
            return None

    obj_vydana = r.json()
    data_vydana = obj_vydana['winstrom']['sum']['sumDoklUcetni']['values']
    prijmyCelk = float(data_vydana['sumDoklCelkem']['value'])
    neuhrVydCelk = float(data_vydana['sumDoklZbyvaUh']['value'])
    dph_vydane = float(data_vydana['sumDoklDphCelk']['value'])


    if date1 and date2:
        try:
            r = s.get("%s/c/%s/faktura-prijata/(duzpPuv between %s %s)/$sum.json" % (hostname, dbNazev, date1[0], date2[0]), params=payload, verify=False)
            r.raise_for_status()
        except requests.exceptions.RequestException as err:
            #response.write(ujson.dumps({ "success": False, "errors": { "reason": str(err)}}))
            #return response
            conn.send({ "success": False, "errors": { "reason": str(err)}})
            conn.close()
            return None

    else:
        try:
            r = s.get("%s/c/%s/faktura-prijata/$sum.json" % (hostname, dbNazev), params=payload, verify=False)
            r.raise_for_status()
        except requests.exceptions.RequestException as err:
            #response.write(ujson.dumps({ "success": False, "errors": { "reason": str(err)}}))
            #return response
            conn.send({ "success": False, "errors": { "reason": str(err)}})
            conn.close()
            return None

    obj_prijata = r.json();
    data_prijata = obj_prijata['winstrom']['sum']['sumDoklUcetni']['values']
    vydajeCelk = float(data_prijata['sumDoklCelkem']['value'])
    neuhrPrijCelk = float(data_prijata['sumDoklZbyvaUh']['value'])
    dph_prijate = float(data_prijata['sumDoklDphCelk']['value'])

    if prijmyCelk != 0:
        result = {
            "corporation": nazev,
            "dbName": dbNazev,
            "prijmyCelk": "%s €" % prijmyCelk,
            "nakladyCelk": "%s €" % vydajeCelk,
            "ziskCelk": "%s €" % (prijmyCelk-vydajeCelk),
            "marzaCelk": ((prijmyCelk-vydajeCelk)/prijmyCelk*100),
            "neuhrVydCelk": "%s €" % neuhrVydCelk,
            "neuhrPrijCelk": "%s €" % neuhrPrijCelk,
            "dph": "%s €" % (dph_vydane-dph_prijate),
        }
    else:
        result = {
            "corporation": nazev,
            "dbName": dbNazev,
            "prijmyCelk": "%s €" % prijmyCelk,
            "nakladyCelk": "%s €" % vydajeCelk,
            "ziskCelk": "%s €" % (prijmyCelk-vydajeCelk),
            "marzaCelk": 0,
            "neuhrVydCelk": "%s €" % neuhrVydCelk,
            "neuhrPrijCelk": "%s €" % neuhrPrijCelk,
            "dph": "%s €" % (dph_vydane-dph_prijate),
        }
    conn.send(result)
    conn.close()
    return None
#####################################################################################

def hometables(request):
    s = requests.Session()
    response = HTTPResponse()
    hostname = request.query.get('hostname', '')[0]
    auth = request.query.get('auth', '')[0]
    p_queue = []
    result = []

    json_r = {"success": True}
    payload = {'authSessionId': request.query.get('auth', '')[0]}
    try:
        r = s.get("%s/c.json" % hostname, params=payload, verify=False)
        r.raise_for_status()
    except requests.exceptions.RequestException as err:
        response.write(ujson.dumps({ "success": False, "errors": { "reason": str(err)}}))
        return response

    obj = r.json()
    data = obj['companies']['company']
    data = make_list(data)

    parent_conn, child_conn = Pipe()
    for company in data:
        p_queue.append(Process(target=hometables_one, args=(child_conn, request, s, hostname, payload, company))) #create a new process with hometables_one function
        p_queue[-1].start()

    for p in p_queue:
        received_data = parent_conn.recv()
        if "success" not in received_data:
            result.append(received_data)s
            p.join()
        else:
            response.write(ujson.dumps(received_data)) #error in hometables_one function
            return response

    json_r["data"] = result
    response.write(ujson.dumps(json_r))
    return response
[{"createDt":"2014-01-28T00:00:00+01:00","dbNazev":"sveatlo","id":"4","licenseGroup":"null","nazev":"Sveatlo","show":"true","stavEnum":"ESTABLISHED","watchingChanges":"false"}]
[{"createDt":"2014-01-28T00:00:00+01:00","dbNazev":"sveatlo","id":"4","licenseGroup":"null","nazev":"Sveatlo","show":"true","stavEnum":"ESTABLISHED","watchingChanges":"false"},{"createDt":"2014-01-28T00:00:00+01:00","dbNazev":"sveatlo1","id":"4","licenseGroup":"null","nazev":"Sveatlo1","show":"true","stavEnum":"ESTABLISHED","watchingChanges":"false"}]
或者像这样:

def hometables_one(conn, request, s, hostname, payload, company):
    date1 = request.query.get('date1', '')      
    date2 = request.query.get('date2', '')

    prijmyCelk = 0;
    vydajeCelk = 0;
    neuhrPrijCelk = 0;
    neuhrVydCelk = 0;
    dph = 0;
    dbNazev = company['dbNazev'];
    nazev = company['nazev'];

    if date1 and date2:
        try:
            r = s.get("%s/c/%s/faktura-vydana/(duzpPuv between %s %s)/$sum.json" % (hostname, dbNazev, date1[0], date2[0]), params=payload, verify=False)
            r.raise_for_status()
        except requests.exceptions.RequestException as err:
            #response.write(ujson.dumps({ "success": False, "errors": { "reason": str(err)}}))
            #return response
            conn.send({ "success": False, "errors": { "reason": str(err)}})
            conn.close()
            return None

    else:
        try:
            r = s.get("%s/c/%s/faktura-vydana/$sum.json" % (hostname, dbNazev), params=payload, verify=False)
            r.raise_for_status()
        except requests.exceptions.RequestException as err:
            #response.write(ujson.dumps({ "success": False, "errors": { "reason": str(err)}}))
            #return response
            conn.send({ "success": False, "errors": { "reason": str(err)}})
            conn.close()
            return None

    obj_vydana = r.json()
    data_vydana = obj_vydana['winstrom']['sum']['sumDoklUcetni']['values']
    prijmyCelk = float(data_vydana['sumDoklCelkem']['value'])
    neuhrVydCelk = float(data_vydana['sumDoklZbyvaUh']['value'])
    dph_vydane = float(data_vydana['sumDoklDphCelk']['value'])


    if date1 and date2:
        try:
            r = s.get("%s/c/%s/faktura-prijata/(duzpPuv between %s %s)/$sum.json" % (hostname, dbNazev, date1[0], date2[0]), params=payload, verify=False)
            r.raise_for_status()
        except requests.exceptions.RequestException as err:
            #response.write(ujson.dumps({ "success": False, "errors": { "reason": str(err)}}))
            #return response
            conn.send({ "success": False, "errors": { "reason": str(err)}})
            conn.close()
            return None

    else:
        try:
            r = s.get("%s/c/%s/faktura-prijata/$sum.json" % (hostname, dbNazev), params=payload, verify=False)
            r.raise_for_status()
        except requests.exceptions.RequestException as err:
            #response.write(ujson.dumps({ "success": False, "errors": { "reason": str(err)}}))
            #return response
            conn.send({ "success": False, "errors": { "reason": str(err)}})
            conn.close()
            return None

    obj_prijata = r.json();
    data_prijata = obj_prijata['winstrom']['sum']['sumDoklUcetni']['values']
    vydajeCelk = float(data_prijata['sumDoklCelkem']['value'])
    neuhrPrijCelk = float(data_prijata['sumDoklZbyvaUh']['value'])
    dph_prijate = float(data_prijata['sumDoklDphCelk']['value'])

    if prijmyCelk != 0:
        result = {
            "corporation": nazev,
            "dbName": dbNazev,
            "prijmyCelk": "%s €" % prijmyCelk,
            "nakladyCelk": "%s €" % vydajeCelk,
            "ziskCelk": "%s €" % (prijmyCelk-vydajeCelk),
            "marzaCelk": ((prijmyCelk-vydajeCelk)/prijmyCelk*100),
            "neuhrVydCelk": "%s €" % neuhrVydCelk,
            "neuhrPrijCelk": "%s €" % neuhrPrijCelk,
            "dph": "%s €" % (dph_vydane-dph_prijate),
        }
    else:
        result = {
            "corporation": nazev,
            "dbName": dbNazev,
            "prijmyCelk": "%s €" % prijmyCelk,
            "nakladyCelk": "%s €" % vydajeCelk,
            "ziskCelk": "%s €" % (prijmyCelk-vydajeCelk),
            "marzaCelk": 0,
            "neuhrVydCelk": "%s €" % neuhrVydCelk,
            "neuhrPrijCelk": "%s €" % neuhrPrijCelk,
            "dph": "%s €" % (dph_vydane-dph_prijate),
        }
    conn.send(result)
    conn.close()
    return None
#####################################################################################

def hometables(request):
    s = requests.Session()
    response = HTTPResponse()
    hostname = request.query.get('hostname', '')[0]
    auth = request.query.get('auth', '')[0]
    p_queue = []
    result = []

    json_r = {"success": True}
    payload = {'authSessionId': request.query.get('auth', '')[0]}
    try:
        r = s.get("%s/c.json" % hostname, params=payload, verify=False)
        r.raise_for_status()
    except requests.exceptions.RequestException as err:
        response.write(ujson.dumps({ "success": False, "errors": { "reason": str(err)}}))
        return response

    obj = r.json()
    data = obj['companies']['company']
    data = make_list(data)

    parent_conn, child_conn = Pipe()
    for company in data:
        p_queue.append(Process(target=hometables_one, args=(child_conn, request, s, hostname, payload, company))) #create a new process with hometables_one function
        p_queue[-1].start()

    for p in p_queue:
        received_data = parent_conn.recv()
        if "success" not in received_data:
            result.append(received_data)s
            p.join()
        else:
            response.write(ujson.dumps(received_data)) #error in hometables_one function
            return response

    json_r["data"] = result
    response.write(ujson.dumps(json_r))
    return response
[{"createDt":"2014-01-28T00:00:00+01:00","dbNazev":"sveatlo","id":"4","licenseGroup":"null","nazev":"Sveatlo","show":"true","stavEnum":"ESTABLISHED","watchingChanges":"false"}]
[{"createDt":"2014-01-28T00:00:00+01:00","dbNazev":"sveatlo","id":"4","licenseGroup":"null","nazev":"Sveatlo","show":"true","stavEnum":"ESTABLISHED","watchingChanges":"false"},{"createDt":"2014-01-28T00:00:00+01:00","dbNazev":"sveatlo1","id":"4","licenseGroup":"null","nazev":"Sveatlo1","show":"true","stavEnum":"ESTABLISHED","watchingChanges":"false"}]
在第一种情况下,当只有一个项时,
hometables\u one
函数运行时没有任何问题,但是添加另一个项会导致错误
[Errno 1]\u ssl.c:1428:error:1408F10B:ssl例程:SSL3\u GET\u记录:错误的版本号
[Errno 1]_ssl.c:1428:error:1408F119:ssl例程:SSL3_GET_记录:解密失败或错误记录mac
。另一件事是,当我在不进行多重处理的情况下运行代码时,即hometable_函数的内容在hometables函数的for循环中,它运行时没有任何问题。 为什么我会犯这些错误?有人能帮我吗


谢谢你的回答

我也遇到过类似的问题。我认为这个错误是多个进程试图访问同一个SSL连接的结果。您可以尝试在每个进程发出请求之前为其引入随机延迟:

time.sleep(random.randrange(10))
r = s.get("%s/c.json" % hostname, params=payload, verify=False)

我也经历过类似的问题。我认为这个错误是多个进程试图访问同一个SSL连接的结果。您可以尝试在每个进程发出请求之前为其引入随机延迟:

time.sleep(random.randrange(10))
r = s.get("%s/c.json" % hostname, params=payload, verify=False)

我也经历过类似的问题。我认为这个错误是多个进程试图访问同一个SSL连接的结果。您可以尝试在每个进程发出请求之前为其引入随机延迟:

time.sleep(random.randrange(10))
r = s.get("%s/c.json" % hostname, params=payload, verify=False)

我也经历过类似的问题。我认为这个错误是多个进程试图访问同一个SSL连接的结果。您可以尝试在每个进程发出请求之前为其引入随机延迟:

time.sleep(random.randrange(10))
r = s.get("%s/c.json" % hostname, params=payload, verify=False)

可能与此有关的副本如果是的话,在该链接上的一些解决方案。可能与此相关的重复如果是的话,在该链接上的一些解决方案。可能与此相关的重复如果是的话,在该链接上的一些解决方案。可能与此相关的重复如果是这样的话,在那个链接上有一些解决方案。我在尝试安装时也有类似的错误。我按照你的建议修改了下面的文件。然后它工作得很好,谢谢你/当我尝试安装时,usr/local/src/Python-2.7.5/Lib/ssl.pyI出现了类似的错误。我按照你的建议修改了下面的文件。然后它工作得很好,谢谢你/当我尝试安装时,usr/local/src/Python-2.7.5/Lib/ssl.pyI出现了类似的错误。我按照你的建议修改了下面的文件。然后它工作得很好,谢谢你/当我尝试安装时,usr/local/src/Python-2.7.5/Lib/ssl.pyI出现了类似的错误。我按照你的建议修改了下面的文件。然后它工作得很好,谢谢你/usr/local/src/Python-2.7.5/Lib/ssl.py