我想构建一个存储队列触发的Azure函数(在python中)来执行一些处理(基本上是调用一些外部API),如果调用不成功,我想在达到最大重试次数之前对消息重新排队。我可以很好地做到这一点,只要在函数中引发一个异常,它就会在我在主机.jsonvisibilityTimeout
。唯一的问题是引发一个异常会将整个函数的执行标记为失败,这会导致监控混乱等
所以我的问题是:我能否实现使用内部重试的相同行为,包括最终的出列计数器和发送到中毒队列,而不引发异常?在不手动克隆消息的情况下,休眠x秒,然后再次手动将其写入队列。你知道吗
基本上我有这样的东西:
def main(msg: func.QueueMessage) -> None:
logging.info('Python queue trigger function processed a queue item: %s',
msg.get_body().decode('utf-8'))
logging.info('dequeue_count: %i', msg.dequeue_count)
# Do some more processing...
raise Exception("Error. Will be retried in a few seconds!")
毕竟,这也可以通过持久的功能来实现。但是我需要一个Python的解决方案,而持久函数目前还不支持Python。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐