Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中执行完成前的中间响应-使用其他云函数调用云函数_Python_Google Cloud Functions - Fatal编程技术网

python中执行完成前的中间响应-使用其他云函数调用云函数

python中执行完成前的中间响应-使用其他云函数调用云函数,python,google-cloud-functions,Python,Google Cloud Functions,我有一个云函数调用python中的另一个云函数。我的问题是,当我调用下一个函数时,第一个函数等待执行或超时 关键是这是关于谷歌云功能的。特别是函数超时和最大API调用速率之间的不匹配。我的问题是函数的最大超时(540秒)比我进行所需API调用所需的时间短,并且我不想创建更多触发器 调用第二个函数后,如何使第一个(调用方)完成其工作? 一些示例代码: #main.py #url:这个特殊的云函数 #函数由包含{“previous_tin_index:0}的post请求启动 导入请求 导入时间 导入

我有一个云函数调用python中的另一个云函数。我的问题是,当我调用下一个函数时,第一个函数等待执行或超时

关键是这是关于谷歌云功能的。特别是函数超时和最大API调用速率之间的不匹配。我的问题是函数的最大超时(540秒)比我进行所需API调用所需的时间短,并且我不想创建更多触发器

调用第二个函数后,如何使第一个(调用方)完成其工作? 一些示例代码:

#main.py
#url:这个特殊的云函数
#函数由包含{“previous_tin_index:0}的post请求启动
导入请求
导入时间
导入日志记录
最终锡指数=100
def eat_垃圾邮件(请求):
已开始吃\u垃圾邮件=time.time()
spam_json=request.get_json()
spam_to_eat=spam_json[“以前的索引”]
对于范围内的垃圾邮件(垃圾邮件到食物):
时间。睡眠(5)
上一个索引+=1
logging.info(“我讨厌垃圾邮件…”)
已完成\u上一个\u垃圾邮件\u time=time.time()-已开始\u吃\u垃圾邮件
如果完成\u上一次\u垃圾邮件\u时间>=10:
logging.info(“让它停止!”)
post(“这个特定的云函数”,json={“previous_tinu_index”:previous_tinu_index})
返回“200”
编辑:我知道固有的问题是函数从未达到返回值。我想知道除了将代码重写为Javascript承诺之外,这是否可以修复


另外,我查看了,但是在特定的示例中似乎缺少python。

这可能会解决您的问题

    def f1(x):
            print('f1', x)
            return f2, (x+1,)
    def f2(x):
            print('f2', x)
            return f1, (x+1,)

    f, args = f1, (0,)
    while True:
            f, args = f(*args)
这是我的功劳

虽然我相信你的问题在于工作流程。您返回的是一个值,但问题是您在代码中从未达到该点。假设有foo1(),在foo1()内调用foo2()。然后开始执行foo()2,但在返回foo1()并继续执行直到到达return命令之前,foo1()已超时

如果您的问题没有解决,那么问题可能出现在第二个功能上,因此可能需要检查此功能以解决您的问题


请告诉我这是否有用。

这可能会解决您的问题

    def f1(x):
            print('f1', x)
            return f2, (x+1,)
    def f2(x):
            print('f2', x)
            return f1, (x+1,)

    f, args = f1, (0,)
    while True:
            f, args = f(*args)
这是我的功劳

虽然我相信你的问题在于工作流程。您返回的是一个值,但问题是您在代码中从未达到该点。假设有foo1(),在foo1()内调用foo2()。然后开始执行foo()2,但在返回foo1()并继续执行直到到达return命令之前,foo1()已超时

如果您的问题没有解决,那么问题可能出现在第二个功能上,因此可能需要检查此功能以解决您的问题


请让我知道这是否有帮助。

很抱歉回复太晚,谢谢你,乔治!问题很清楚,但是,我的用例需要执行多个函数。这是因为我调用的API配额有限,超过了函数的超时时间。另外,我不想做多个触发器。我只是想知道这在Python中是否很容易实现。有趣的想法,返回一个函数!谢谢你的迟到的回复,谢谢你,乔治!问题很清楚,但是,我的用例需要执行多个函数。这是因为我调用的API配额有限,超过了函数的超时时间。另外,我不想做多个触发器。我只是想知道这在Python中是否很容易实现。有趣的想法,返回一个函数!谢谢你,乔治