Форум сайта python.su
Как-же их ловить?
Смотрю в книгу вижу фигу..
Не получаеться их ловить.
@contextlib.contextmanager def die_on_error(): try: yield except Exception: logging.error("exception in asynchronous operation",exc_info=True) sys.exit(1) with StackContext(die_on_error): # Any exception thrown here *or in callback and its desendents* # will cause the process to exit instead of spinning endlessly # in the ioloop. http_client.fetch(url, callback) ioloop.start()
AttributeError: 'NoneType' object has no attribute 'do_handshake'
HTTPError: HTTP 599: [Errno 111] Connection refused
Офлайн
AsyncHTTPClient вроде не вызывает исключения, он возвращает переменную error при ошибках.
Можно попробовать запустить все через tornado.gen.Task.
Давайте полный пример, который можно запустить.
Офлайн
import tornado.ioloop import tornado.httpclient def handle_request(response): if response.error: print "Error:", response.error else: print response.body tornado.ioloop.IOLoop.instance().stop() http_client = tornado.httpclient.AsyncHTTPClient() http_client.fetch("http://www.hjohj.com/", handle_request) tornado.ioloop.IOLoop.instance().start()
Офлайн
Добавьте строку в начале:
tornado.httpclient.AsyncHTTPClient.configure("tornado.curl_httpclient.CurlAsyncHTTPClient")
Офлайн
Решил попробовать стандартный fetch…
все просто
Пример этот как надо не работает(не ловит исключения),…Не ловится потому что нет исключения (там варниниг валится, который сбил с толку), вам вернулся error, теперь вы можете сами вызвать исключение если хотите
if response.error: raise Exception(response.error)
Отредактировано o7412369815963 (Янв. 26, 2013 11:35:31)
Офлайн
Не ловится потому что нет исключения (там варниниг валится, который сбил с толку), вам вернулся error, теперь вы можете сами вызвать исключение если хотитеWarning как я понимаю это.
WARNING:root:uncaught exceptionА исключение сразу после него?
Traceback (most recent call last):
File “/usr/local/lib/python2.7/dist-packages/tornado/simple_httpclient.py”, line 318, in cleanup
yield
File “/usr/local/lib/python2.7/dist-packages/tornado/simple_httpclient.py”, line 174, in __init__
0, 0)
gaierror: No address associated with hostname
Офлайн
Нет, исключения нет вообще, иначе “hello” и “finish” не вывелось бы:
import tornado.ioloop import tornado.httpclient def handle_request(response): if response.error: print "Error:", response.error else: print response.body print 'hello' tornado.ioloop.IOLoop.instance().stop() http_client = tornado.httpclient.AsyncHTTPClient() http_client.fetch("http://www.hjohj.com/", handle_request) tornado.ioloop.IOLoop.instance().start() print 'finish'
WARNING:root:uncaught exception Traceback (most recent call last): File "/usr/local/lib/python2.7/dist-packages/tornado/simple_httpclient.py", line 318, in cleanup yield File "/usr/local/lib/python2.7/dist-packages/tornado/simple_httpclient.py", line 174, in __init__ 0, 0) gaierror: [Errno -5] No address associated with hostname Error: [Errno -5] No address associated with hostname hello finish
Офлайн
Только сейчас понял что это сообщение logging, дабы не лезли когда не надо.
Убрал так.
tornado.simple_httpclient.logging.basicConfig(level = ERROR)
Отредактировано mironich (Янв. 28, 2013 02:14:11)
Офлайн