【问题标题】:Is resume() function available in python 2.7?python 2.7 中是否提供 resume() 函数?
【发布时间】:2014-03-17 09:30:58
【问题描述】:

python中有没有resume()函数。我需要将它应用到我的程序中。需要适当的解释我搜索了很多但没有得到它。

这是我需要放置resume 函数的代码。

try:
    soup = BeautifulSoup(urllib2.urlopen(url))
    abc  =  soup.find('div', attrs={})
    link =    abc.find('a')['href']
    #result is dictionary
    results['Link'] =  "http://{0}".format(link)
    print results
    #pause.minute(1)
    #time.sleep(10)

except Exception:
    print "socket error continuing the process"
    time.sleep(4)
    #pause.minute(1)
    #break

我申请了pausetime.stampbreak,但没有得到所需的结果。如果try 出现任何错误,那么我想pause 程序。 try 块已经在循环中。

【问题讨论】:

  • 请解释resume() 函数应该做什么。
  • 我从网站收集 url 我收到套接字错误,所以我使用 try 和 catch 来解决这个问题,所以如果程序卡在任何地方,我需要从同一位置恢复,所以我需要知道我是如何可以在 python 中做到这一点。
  • 您需要显示一些代码和您的错误,以便人们有机会帮助您...就目前而言,这对于任何人来说都过于模糊,无法提供答案。
  • Python 的异常一旦引发就无法恢复(与 Java 和 C++ 异常相同)。如果您想在异常发生后恢复操作,您将需要一个 try/except 块,一个围绕生成异常的代码的显式循环。
  • 我在上面展示了我的作品。

标签: python sockets python-2.7


【解决方案1】:

要在发生异常时恢复代码,请将其放入循环中:

import time
import urllib2
from bs4 import BeautifulSoup # $ pip install beautifulsoup4

for _ in range(max_retries):
   try:
       r = urllib2.urlopen(url) 
       encoding = r.info().getparam('charset')
       html = r.read()
   except Exception as e:
       last_error = e
       time.sleep(retry_timeout)
   else:
       break
else: # all max_retries attempts failed 
   raise last_error 

soup = BeautifulSoup(html, from_encoding=encoding)
# ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-28
    • 2014-05-16
    • 2014-06-13
    • 1970-01-01
    • 2015-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多