2010-08-24 28 views

Trả lời

13

Alex là chính xác: mechanize.urlopen lấy đối số timeout. Do đó, chỉ cần chèn một số seconds in floating point: mechanize.urlopen('http://url/', timeout=30.0).

Nền, từ nguồn gốc của mechanize.urlopen:

def urlopen(url, data=None, timeout=_sockettimeout._GLOBAL_DEFAULT_TIMEOUT): 
    ... 
    return _opener.open(url, data, timeout) 

là gì mechanize._sockettimeout._GLOBAL_DEFAULT_TIMEOUT bạn yêu cầu? Nó chỉ là cài đặt của mô-đun socket.

import socket 

try: 
    _GLOBAL_DEFAULT_TIMEOUT = socket._GLOBAL_DEFAULT_TIMEOUT 
except AttributeError: 
    _GLOBAL_DEFAULT_TIMEOUT = object() 
+0

Cũng cũ 'br.open()' có vẻ có tham số hết thời gian chờ: https://github.com/jjlee/mechanize/blob/b1d786906946f0193051920a7c716b339bd7bf95/mechanize/_mechanize.py#L200 – Mikeumus

3

Nếu bạn đang sử dụng Python 2.6 trở lên và phiên bản cập nhật tương ứng của mechanize, mechanize.urlopen phải chấp nhận đối số tùy chọn timeout=... có vẻ như bạn đang tìm kiếm.

1

Tôi tin rằng một cái gì đó dọc theo dòng của

mechanize._sockettimeout._GLOBAL_DEFAULT_TIMEOUT = 100 

sẽ ghi đè giá trị mặc định mechanize sử dụng.

Các vấn đề liên quan