我怎么抓urllib.error.HTTPError:HTTP错误403:禁止?

2024-09-19 03:55:36 发布

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

我正在编写一个Flask应用程序,其中我调用了一个可能返回403的方法。我认为以下代码可以适当地处理错误:

try:
    connection = myLib.Login(username, password)
except urllib.error.HTTPError as err:
    abort(err.code)

但这似乎行不通。万一myLib.登录返回403得到以下结果:

^{pr2}$

如何捕获此错误并返回403?在

在一个普通的Python脚本中,异常触发得很好,所以我怀疑这可能与flask和/或uwsgi有关。在


Tags: 方法代码应用程序flaskusernameloginerrorpassword
2条回答

例外情况正如期进行。我的devops链就是问题。在

这很可能是

connection = myLib.Login(username, password)

是异步的。myLib.登录可能会产生子线程。父母不能捕捉到在孩子身上提出的例外,因为他们有自己的背景。 有关详细信息,请参阅Catch a thread's exception in the caller thread in Python。在

编辑:

如果要等待(“块”)直到建立连接,然后决定是继续还是中止,可以使用queues在线程之间建立通信:

^{pr2}$

在队列.get阻塞设置为true(默认值)的()将等待队列中有可用的项。处理HTTPError需要在登录部分进行,然后在put()中进行。您还可以为get()设置一个超时参数,该参数将导致在时间结束后队列中没有元素时引发异常。在

相关问题 更多 >