Web Services 在IPython图像显示中捕获故障

dzjeubhm  于 2023-10-24  发布在  Python
关注(0)|答案(1)|浏览(128)

在我的Xueyter Notebook中,我需要将Graphviz源文件的渲染委托给外部服务,例如QuickChart

from IPython.display import Image
url = "https://quickchart.io/graphviz?graph=graph{a--b}"
Image(url=url)

但是,如果失败(例如,服务器停机,或达到速率限制等),我希望能够回退到另一个服务。下面的屏幕截图显示了一个工作示例和一个失败案例的结果:

我如何捕捉产生这个损坏的图像图标的错误?我会对一个通用的答案感兴趣,独立于特定的服务或图像格式。阅读source code没有给我任何线索,__dict__对象只包含参数:

>>> Image(url=url).__dict__
{'format': 'https://quikchat.io/graphviz?graph=graph{a--b}',
 'embed': False,
 'width': None,
 'height': None,
 'retina': False,
 'unconfined': False,
 'alt': None,
 'url': 'https://quikchat.io/graphviz?graph=graph{a--b}',
 'filename': None,
 'data': None,
 'metadata': {}}
8i9zcol2

8i9zcol21#

这个url支持HEAD调用,所以你可以使用它来检查url:

import requests

r = requests.head('https://quickchart.io/graphviz?graph=graph{a--b}')

# all good
r.raise_for_status()

r = requests.head('https://quickchat.io/graphviz?graph=graph{a--b}')

# fails
r.raise_for_status()

其中HEAD调用不返回数据

相关问题