使用具有长时间运行进程的pull订阅

时间:2017-03-17 13:34:33

标签: python google-app-engine publish-subscribe google-cloud-pubsub

我的main.py

中有类似的内容
while (True):
    pulled = subscription.pull(max_messages=1) # also tried with return_immediately=True
    for ack_id, data in pulled:
        subscription.acknowledge([ack_id])
        run_task() # takes 15 minutes to return
    time.sleep(30)

我要做的是从队列中获取一条消息,立即确认,然后运行我的长期工作。

但是每一次,在run_task()开始的10分钟后,subscription.pull行出现以下错误:

  

“google.gax.errors.GaxError:GaxError(RPC失败,由   < _以(StatusCode.UNAVAILABLE结尾)终止的RPC的Rendezvous,   {...“description”:“端点读取失败”...}

我可以说这个错误发生在run_task()完成之前,但是run_task()内没有抛出异常。我不知道run_task()如何停止,pull()现在正在执行。

谁能说出这里发生了什么?我有点认为消息没有被确认,确认截止日期到期,但消息永远不会被重新传递,因此理论不会加起来。

0 个答案:

没有答案