【问题标题】:how do i set a timeout value for python's mechanize?如何为 python 的机械化设置超时值?
【发布时间】:2011-04-02 22:45:41
【问题描述】:

如何为python的机械化设置超时值?

【问题讨论】:

    标签: python timeout mechanize


    【解决方案1】:

    Alex 是正确的:mechanize.urlopen 接受 timeout 参数。因此,只需插入多个seconds in floating pointmechanize.urlopen('http://url/', timeout=30.0)

    背景,来自mechanize.urlopen的来源:

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

    你问什么mechanize._sockettimeout._GLOBAL_DEFAULT_TIMEOUT?这只是 socket 模块的设置。

    import socket
    
    try:
        _GLOBAL_DEFAULT_TIMEOUT = socket._GLOBAL_DEFAULT_TIMEOUT
    except AttributeError:
        _GLOBAL_DEFAULT_TIMEOUT = object()
    

    【讨论】:

    【解决方案2】:

    如果您使用的是 Python 2.6 或更高版本,以及相应更新的 mechanize 版本,mechanize.urlopen 应该接受 timeout=... 可选参数,这似乎是您正在寻找的。​​p>

    【讨论】:

      【解决方案3】:

      我相信类似于

      mechanize._sockettimeout._GLOBAL_DEFAULT_TIMEOUT = 100
      

      将覆盖 Mechanize 使用的默认值。

      【讨论】:

      • 什么是默认的?
      • mechanize._sockettimeout._GLOBAL_DEFAULT_TIMEOUT.__sizeof__() 这个给16
      猜你喜欢
      • 2017-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多