我希望我的服务总线触发的Python Azure函数使它从队列中检索到的消息在队列上可用,以便再次重试.我希望这在不引发函数异常的情况下发生.然而,根据前documentation名:

在非C#函数中,函数中的异常会导致运行时调用在后台放弃Async.如果没有异常发生,则在后台调用CompleteAsync.

如果函数成功返回,则将调用CompleteAsync.

我知道Service Bus Receiver有一个功能,允许您放弃一条消息,以便它在队列中再次可用.但我认为这在Azure函数已经为您检索消息的情况下不起作用.

此外,Azure函数中接收的ServiceBusMessage对象似乎没有允许您"放弃"或以其他方式将消息返回到队列的方法.

网上关于这个问题的大多数其他问题似乎都是针对C#的,所以我没有太多地go 寻找答案.

我的Azure函数正在调用第三方API,不幸的是,该API容易出错,这超出了我的控制范围.然而,在查看错误报告时,我不希望这个Azure函数总是位于失败函数列表的首位.当此API调用失败时,必须在我的函数中引发异常,而这并不是意外的结果,这似乎是多余的.我希望将该函数作为成功返回,因为从我的Angular 来看,该函数没有任何错误,但队列中的消息需要再次try .

推荐答案

简而言之,目前不能通过Python语言工作者来完成这项工作.

目前,只有.NET函数工作者(进程内和隔离的)能够绑定到显式完成消息所需的ServiceBusMessageActions参数.其他语言工作者完成消息的唯一方法是处理成功,或者失败足够多的次数,以至于超过传递计数,或者触发the other service-side DLQ actions次中的一个,消息是死信.

计划将消息操作功能带给其他语言工作者,但据我所知,还没有共享的时间表.

Python相关问答推荐

基于字符串匹配条件合并两个帧

在Python中动态计算范围

ThreadPoolExecutor和单个线程的超时

将输入聚合到统一词典中

给定高度约束的旋转角解析求解

如何在FastAPI中为我上传的json文件提供索引ID?

根据客户端是否正在传输响应来更改基于Flask的API的行为

python的文件. truncate()意外地没有截断'

为什么按下按钮后屏幕的 colored颜色 保持不变?

用LAKEF划分实木地板AWS Wrangler

将时间序列附加到数据帧

如何让doctest在mkdocs的标记代码块中运行示例?

通过PyTorch中的MIN函数传递渐变

try 第二次训练新的JAX+Equinox模型时,具有多个元素的数组的真值不明确(&Q)

有没有一种简单的方法来访问Polars struct 中的值?

matplotlib散点图与NaNs和cmap colored颜色 矩阵

给定Pandas 列DataFrame中的一个值,在其他DataFrame中 Select 与该值最接近的N行

查找一个数据帧中另一个数据帧的值的索引

用于从项目问题描述中提取文本的Selify代码

Python如何模拟S由高阶函数返回的函数