优雅的方式来处理断开的连接?

时间:2018-11-06 18:54:48

标签: python python-requests

我正在开发基于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

0 个答案:

没有答案