2013-12-14 42 views
5

Các mã sau đây:Python: yêu cầu mô-đun ném ngoại lệ với Gevent

import gevent 
import gevent.monkey 
gevent.monkey.patch_socket() 

import requests 
import json 

base_url = 'https://api.getclever.com' 
section_url = base_url + '/v1.1/sections' 

#get all sections 
sections = requests.get(section_url, auth=('DEMO_KEY', '')).json() 
urls = [base_url+data['uri']+'/students' for data in sections['data']] 

#get students for each section 
threads = [gevent.spawn(requests.get, url, auth=('DEMO_KEY', '')) for url in urls] 
gevent.joinall(threads) 
students = [thread.value for thread in threads] 

#get number of students in each section 
num_students = [len(student.json()['data']) for student in students] 
print (sum(num_students)/len(num_students)) 

kết quả trong lỗi này:

Traceback (most recent call last): 
    File "clever.py", line 12, in <module> 
    sections = requests.get(section_url, auth=('DEMO_KEY', '')).json() 
    File "/Library/Python/2.7/site-packages/requests/api.py", line 55, in get 
    return request('get', url, **kwargs) 
    File "/Library/Python/2.7/site-packages/requests/api.py", line 44, in request 
    return session.request(method=method, url=url, **kwargs) 
    File "/Library/Python/2.7/site-packages/requests/sessions.py", line 382, in request 
    resp = self.send(prep, **send_kwargs) 
    File "/Library/Python/2.7/site-packages/requests/sessions.py", line 485, in send 
    r = adapter.send(request, **kwargs) 
    File "/Library/Python/2.7/site-packages/requests/adapters.py", line 379, in send 
    raise SSLError(e) 
requests.exceptions.SSLError: [Errno 2] _ssl.c:503: The operation did not complete (read) 

Tôi đang làm gì sai ở đây?

Trả lời

7

Đây là câu hỏi tương tự: [Errno 2] _ssl.c:504: The operation did not complete (read).

Khi bạn nhận xét ra

gevent.monkey.patch_socket() 

hoặc sử dụng

gevent.monkey.patch_all() 

hoặc sử dụng

gevent.monkey.patch_socket() 
gevent.monkey.patch_ssl() 

thì vấn đề sẽ biến mất.

+0

Cảm ơn! patch_all() đã sửa nó. – tldr

+0

Tôi nghĩ câu trả lời này không còn hoạt động vì chức năng 'patch_ssl' đã bị xóa (https://github.com/mopemope/meinheld/commit/68e5854bbc43e0010b56c80248e15a97336dfe6d) – EoghanM

+0

@EoghanM không hề. Nó ** hoàn toàn ** làm việc cho tôi. –