gpt4 book ai didi

python - 如何在长时间运行的程序中立即确认 Pub/Sub 消息

转载 作者:行者123 更新时间:2023-12-01 07:26:08 28 4
gpt4 key购买 nike

我有一个运行 Python 3.7(标准环境)的 App Engine 服务,该服务是 Pub/Sub 主题的推送订阅者(因此由其触发)。这个程序可以运行很长时间。我需要能够立即确认消息,然后继续运行,以便服务不会连续收到相同的消息。

我在这里看到两种可能性:

  1. 理想情况下,我希望能够确认该消息,然后让程序正常运行;
  2. 或者,考虑到服务是幂等的,我可以让服务充斥着消息,忽略所有重复消息,然后在程序结束时确认一次。

我认为选项 1 似乎更有吸引力 - 但我不知道它在 Python 中是否可行。据我所知(如果我错了,请纠正我),该消息通过最后返回的 200 状态得到确认。

我已将基本框架放入下面的程序中。欢迎任何想法,谢谢!

@app.route('/_ah/push-handlers/receive_messages/', methods=['POST'])
def receive_messages_handler():
if (request.args.get('token', '') != current_app.config['PUBSUB_VERIFICATION_TOKEN']):
return 'Invalid request', 400

envelope = json.loads(request.data.decode('utf-8'))
payload = base64.b64decode(envelope['message']['data'])

logging.info(f"Recieved message: {payload}")

# Long-running program in here

return 'OK', 200

最佳答案

我推荐你看看cloud task 。它专为长期运行而设计,具有重试策略

设计如下:

  • appengine 使用 pubsub 消息、创建任务并确认消息(返回 2xx)
  • 云任务为长时间运行的流程调用 appengine 新端点。

关于python - 如何在长时间运行的程序中立即确认 Pub/Sub 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57439642/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com