如何使用PUBSUB作为触发器从Google Cloud函数返回JSON?

时间:2018-12-28 01:48:05

标签: google-cloud-platform google-cloud-functions google-cloud-pubsub

我正在使用Python pubsub客户端发布主题,并且设置了由pubsub消息触发的云功能。我可以正确触发该函数并生成所需的返回值,但是我无法确定将该值返回给发布者/客户端。谢谢大家!

客户代码:

def call_getTime():

    message_future = publisher.publish(topic_path,
                                       data=data,
                                       )
    message_future.add_done_callback(callback)
    print(message_future.result())


def callback(message_future):
    if message_future.exception(timeout=30):
        print('Publishing message threw an Exception {}.'.format(
            message_future.exception()))
    else:
        print(message_future.result())

云功能:

def getTime(data, context):
        r = {'time': time.time()}
        return flask.jsonify(r)

1 个答案:

答案 0 :(得分:1)

Pubsub函数不“返回”消息。他们只使用消息,通常不关心消息的来源。这不是双向交流。

如果要双向通信,请改用HTTP触发器。您可以在HTTP响应的正文中发送回一条消息。

如果出于某种原因不能使用HTTP,并且必须坚持使用pubsub,请考虑将另一条消息发布到另一个主题,并安排发件人在另一个主题上接收该消息。或使用某种Webhook通知某人该消息已处理。