代码停止并且不报告异常(使用“请求”)

2024-09-27 00:15:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python还不熟悉。我试图重新创建.NETFramework中使用的“Timer”控件(“Timer”在Python中是另一回事……)。因此,基本上,我创建了一个名为CheckMessages的函数,它在执行之后,停止主线程1秒,然后再次调用CheckMessages。在normal情况下(=当代码中没有抛出异常时),这是很好的。一次执行和下一次执行之间的计时显然不精确(它是从不1秒),但对于我的应用程序范围来说,这不是一个问题。 问题是:当抛出异常时,什么都不会发生。代码不符合我的尝试。。。除了逻辑(没有显示日志)和应用程序不退出

import time
import sched
import requests

s = sched.scheduler(time.time, time.sleep)

def CheckMessages(sc):
    newMsgsReq = ""
    try:

        newMsgsReq = requests.get("...")

    except requests.HTTPError as errh:
        print ("Http Error:",errh)
    except requests.ConnectionError as errc:
        print ("Connection Error:",errc)
    except requests.Timeout as errt:
        print ("Timeout Error:",errt)
    except requests.RequestException as err:
        print ("OOps: Something Else",err)

    msgInf = newMsgsReq.text.split("|")

    #...

    s.enter(1, 1, CheckMessages, (sc,))

s.enter(1, 1, CheckMessages, (s,))
s.run()

例如,当我禁用internet连接时,我希望我的应用程序报告:connection Error:... (代码段的第11行)。相反,正如所说,什么也没发生。应用程序仍处于活动状态,但输出为空。每1秒停止执行CheckMessages功能


Tags: 代码import应用程序timeaserrorrequestssc
1条回答
网友
1楼 · 发布于 2024-09-27 00:15:56

当我输入一个无效的URL(“http://sdkls9e9i.ooo”)时,我看到异常被成功打印出来

在处理请求的异常之后,脚本将退出AttributeError: 'str' object has no attribute 'text',因为您试图在处理异常之后处理响应(msgInf = newMsgsReq.text.split("|")

当我听从你的指示,关闭了我的网络连接时,脚本确实“挂起”。按CTRL+C显示它正在等待:

File ".../site-packages/urllib3/util/connection.py", line 70, in create_connection
  sock.connect(sa)

在我添加了timeoutrequests.get("...", timeout=1)之后,我也得到了异常

注意,pep8风格指南建议使用^{} for variable and function names

相关问题 更多 >

    热门问题