我正在开发基于discogs_client
库的应用程序,该库基于requests
。
我正在尝试在discogs
数据库中找到我的mp3目录的ID,并将其保存到sqlite
数据库中。应用程序基于文件标签识别一些intel,然后有几个功能,这些功能被一个接一个地触发,并以使用该信息的不同方式查询discogs
db。有些功能快速,有些则复杂而漫长。有时会发生连接错误,有时找不到艺术家。
我想知道如何以优雅的方式有效地处理这些错误。我的意思是,我想重复它停止的功能,或者,如果可能的话,重复该函数内部的循环步骤。现在,我要重复整个应用程序的步骤-一个目录,当先前的功能工作了几个小时后,在最后一次运行功能时断开连接时,这很烦人。
我知道有一种方法可以在try
循环中使用except
作为continue
指令来生成except
/ while True:
语句,但是我想有一种快速有效的方法可以使它像这样工作,而不是将每个简单函数放在while True:
循环异常语句中。
这是一组功能:
def find_a_master(cat_attrs, f_attrs_list):
while True:
m_by_token(cat_attrs, 10)
if is_found(cat_attrs, 'd_master'):
break
m_by_album(cat_attrs, 50)
if is_found(cat_attrs, 'd_master'):
break
m_by_variations(cat_attrs, 100)
if is_found(cat_attrs, 'd_master'):
break
m_by_token_cut(cat_attrs, 10)
if is_found(cat_attrs, 'd_master'):
break
m_by_album_fuzz(cat_attrs)
if is_found(cat_attrs, 'd_master'):
break
m_by_album_fuzz_excl(cat_attrs)
if is_found(cat_attrs, 'd_master'):
break
if config.manual_mode:
m_by_manual(cat_attrs)
if is_found(cat_attrs, 'd_master'):
break
m_by_artist(cat_attrs)
break
return cat_attrs