Найти - Пользователи
Полная версия: Зависание работы скрипта
Начало » Python для новичков » Зависание работы скрипта
1 2
Yuri197
Вы бы скрипт разнообразия ради выложили бы? А то можно только предположения делать на тему вышеуказанных ошибок.
philips2009
Извините, но я удалил скрипт…
Yuri197
Соединение вы можете проверить просто выполнив какой-нибудь простой запрос к другому сайту.

У вас взаимодействие с интернетом осуществляет одна функция:
 def get_html(url):
    r = requests.get(url)
    html = r.text
    return html
И эта функция работает. Возможно проблемы у вас в настройках интернета. А скорее всего вас просто временно блокируют админы сайта - на первый взгляд ваш скрипт делает большое количество запросов.
philips2009
Проверил работу данного скрипта на другом ПК где скорость интернета выше и стабильнее - работает без каких либо проблем и ошибок
philips2009
Извините за назойливость, еще ошибки:
 Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 560, in urlopen
    body=body, headers=headers)
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 346, in _make_request
    self._validate_conn(conn)
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 787, in _validate_conn
    conn.connect()
  File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 252, in connect
    ssl_version=resolved_ssl_version)
  File "/usr/lib/python3/dist-packages/urllib3/util/ssl_.py", line 305, in ssl_wrap_socket
    return context.wrap_socket(sock, server_hostname=server_hostname)
  File "/usr/lib/python3.5/ssl.py", line 377, in wrap_socket
    _context=self)
  File "/usr/lib/python3.5/ssl.py", line 752, in __init__
    self.do_handshake()
  File "/usr/lib/python3.5/ssl.py", line 988, in do_handshake
    self._sslobj.do_handshake()
  File "/usr/lib/python3.5/ssl.py", line 633, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLEOFError: EOF occurred in violation of protocol (_ssl.c:645)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/requests/adapters.py", line 376, in send
    timeout=timeout
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 589, in urlopen
    raise SSLError(e)
requests.packages.urllib3.exceptions.SSLError: EOF occurred in violation of protocol (_ssl.c:645)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "999_parser.py", line 430, in <module>
    main()
  File "999_parser.py", line 300, in main
    cat_url_html = get_html(cat_url)
  File "999_parser.py", line 11, in get_html
    r = requests.get(url)
  File "/usr/lib/python3/dist-packages/requests/api.py", line 67, in get
    return request('get', url, params=params, **kwargs)
  File "/usr/lib/python3/dist-packages/requests/api.py", line 53, in request
    return session.request(method=method, url=url, **kwargs)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 480, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 588, in send
    r = adapter.send(request, **kwargs)
  File "/usr/lib/python3/dist-packages/requests/adapters.py", line 447, in send
    raise SSLError(e, request=request)
requests.exceptions.SSLError: EOF occurred in violation of protocol (_ssl.c:645)
philips2009
Вместо for ( в функции main() ):
 for url in urls:
    try:
        data = get_data(url)
    except ... ReadTimeout:
        ...
    except ... ConnectTimeout:
        ...

поставил while
 n = 0
while n < len(urls):
    try:
        data = urls[n]
        n += 1
     except ... ReadTimeout:
        ...
    except ... ConnectTimeout:
        ...

и в функции get_html() поставил timeout=20
Пока все работает. Спасибо всем.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB