2015-12-24 2 views
0

Как я могу подавить следующие сообщения об ошибках отладки, которые я получаю от grequests?Полностью отключить регистрацию grequests

Traceback (most recent call last): 
    File "/usr/local/lib/python2.7/dist-packages/gevent/greenlet.py", line 327, in run 
    result = self._run(*self.args, **self.kwargs) 
    File "/usr/local/lib/python2.7/dist-packages/grequests.py", line 71, in send 
    self.url, **merged_kwargs) 
    File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 456, in request 
    resp = self.send(prep, **send_kwargs) 
    File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 559, in send 
    r = adapter.send(request, **kwargs) 
    File "/usr/local/lib/python2.7/dist-packages/requests/adapters.py", line 384, in send 
    raise Timeout(e, request=request) 
Timeout: HTTPSConnectionPool(host='itunes.apple.com', port=443): Read timed out. 
<Greenlet at 0x7ff0c8165910: <bound method AsyncRequest.send of <grequests.AsyncRequest object at 0x7ff0c880b8d0>>(stream=False)> failed with Timeout 

Вот что я пытался до сих пор:

# disable requests/grequests logging 
logging.getLogger("requests").setLevel(logging.CRITICAL) 
logging.getLogger("grequests").setLevel(logging.CRITICAL) 
logging.getLogger("urllib3").setLevel(logging.CRITICAL) 
logging.getLogger("gevent").setLevel(logging.CRITICAL) 

Ошибка возникает здесь:

rs = (grequests.get(url, headers=headers, cookies=cookies, proxies=proxies, timeout=timeout) for url in urls) 
res_items = grequests.map(rs) # <-- this command produces all the errors 

Я получаю буквально тысячи этих сообщений, которые я не хотеть увидеть. Я также использую log.debug во многих других местах, поэтому не хочу менять уровень отладки в масштабах всей программы. Как я могу подавить только отладочные сообщения grequests?

ответ

0

Для этого вам нужно сделать три вещи:

(1) Убедитесь, что у вас самая последняя версия grequests установлена:

sudo pip install git+https://github.com/kennethreitz/grequests.git 

(2) иметь обработчик для функции grequests.map:

def exception_handler(request, exception): 
    pass # suppress errors on grequests.map 

res_items = grequests.map(rs, exception_handler=exception_handler) 

(3) Подавите urllib3 предупреждения:

import urllib3 
urllib3.disable_warnings() 
logging.captureWarnings(True) 

Теперь не должно быть никаких предупреждений, исходящих от grequests.

Смежные вопросы