首页 > 解决方案 > Python 函数在 Django 中被调用得太快

问题描述

即使我将它分配给一个变量,API 调用也会触发得太快。

我已经实现了一些想法,如示例中所示(不是实际的代码,而是相同的原理)。

""" Example #1 """

fruit = 'banana'

def search_engine(fruit):
    engine = {
        'apple': google.search(Time="10 hours ago"),
        'banana': yahoo.searchNow(Time="12 min ago"),
        'pear': bing.searchNow(Time="13h ago"),
        }
    print(engine[fruit])

search_engine(fruit)



""" Example #2 """

fruit = 'banana'

def search_engine(fruit):
    GS = google.search(Time="10 hours ago")
    YS = yahoo.searchNow(Time="12 min ago")
    BS = bing.searchNow(Time="13h ago")

    engine = {
        'apple': GS,
        'banana': YS,
        'pear': BS,
        }
    print(engine[fruit])

让我们假设 Time 是一个不正确的值,无论如何都会抛出异常。

然而,在示例 #1 中,首先调用“apple”并抛出异常,而应该调用“banana”。

在示例 #2 中,它在“GS = google.search(Time....”处引发异常,而不是为“YS = yahoo.searchNow...”执行此操作

自从尝试将我的 Python 项目集成到 Django 中后,我才遇到这个问题。

标签: pythondjango

解决方案


您应该分别存储可调用对象及其参数,并在检索项目时调用它们。

engine = {
    'apple': (google.search, {"Time": "10 hours ago"}),
    'banana': (yahoo.searchNow, {"Time": "12 min ago"}),
    'pear':  (bing.searchNow, {"Time": "13h ago"}),
    }
obj, kwargs = engine[fruit]
print(obj(**kwargs))

推荐阅读