如何在 Taipy 核心任务上实现延迟重试模式

问题描述 投票:0回答:1

我想在我的任务 API 上实现重试模式。

我可以在不自己尝试/捕获的情况下做到这一点吗?如果出现错误,下一个任务是否可以等待几秒钟再重试?

import requests
from taipy import Config
import taipy as tp


def api():
    r = requests.get('<url>')
    return r.json()


scc = Config.configure_scenario_from_tasks("sc",
                                          [Config.configure_task("api_call",
                                                                 api,
                                                                 [],
                                                                 [Config.configure_data_node("api_result")])
                                          ])

if __name__ == '__main__':
    tp.Core().run()
    scenario = tp.create_scenario(scc)
    tp.submit(scenario)

    print(scenario.api_result.read())
python python-requests taipy
1个回答
0
投票

目前 Taipy Core 中没有内置的重试模式。

但是,场景可以订阅回调。每次状态作业发生变化(任务执行)时,都会调用此回调。如果作业状态失败,您可以执行一些代码。例如,您可以重新提交场景:

from taipy.core import Scenario, Job
import taipy as tp

MAX_RETRY = 5

def subscribe_to_retry(scenario: Scenario, job: Job):
    print(scenario.name, job.status.name)
    if 'retry' not in scenario.properties.keys():
        scenario.properties['retry'] = 0
    if job.status.name == 'FAILED' and scenario.properties['retry'] < MAX_RETRY:
        scenario.properties['retry'] += 1
        scenario.submit()

# this mechanism will be applied to all the scenarios
tp.subscribe_scenario(subscribe_to_retry)

您也可以直接在 Taipy 任务的函数中添加重试模式。

def funct(retry=3):
    try:
       ...
        return ...
    except e:
        if retry > 0:
            return funct(retry-1)
        raise e
© www.soinside.com 2019 - 2024. All rights reserved.