处理断开连接的优雅方法?

2024-05-18 07:14:11 发布

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

我正在开发一个基于discogs_client库的应用程序,它基于requests。你知道吗

我试图在discogs数据库中为我的mp3目录找到ID,并将其保存到sqlitedb。应用程序根据文件标签识别一些intel,然后有几个函数,这些函数被逐个触发,并以不同的方式使用这些信息来查询discogsdb。有些函数很快,有些函数很复杂而且很长。有时发生连接错误,有时找不到艺术家。你知道吗

我想知道如何优雅有效地处理这些错误。我的意思是,我想重复它停止的函数,或者,如果可能的话,在函数中重复循环的步骤。现在我重复整个应用程序的第一步-目录,这是非常恼人的连接时,断开了最后一个函数运行,经过几个小时的工作,以前的函数。你知道吗

我知道有一种方法可以使try/except语句在while True:循环中使用continue作为except指令,但我认为有一种快速有效的方法可以使它像这样工作,而不是将每个简单函数放在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

Tags: 函数master目录true应用程序albumbyif