【问题标题】:Cloud Function with pubsub trigger topic is not working带有 pubsub 触发器主题的云功能不起作用
【发布时间】:2020-12-10 04:42:38
【问题描述】:

我编写了一个简单的代码来打印来自 pubsub 触发云函数的数据和上下文。

def main(事件,上下文): """Pub/Sub 触发的后台云功能。 参数: 事件(dict):包含特定于这种类型的数据的字典 事件。 data 字段包含 PubsubMessage 消息。这 attributes 字段将包含自定义属性(如果有)。 context (google.cloud.functions.Context):云函数事件 元数据。 event_id 字段包含 Pub/Sub 消息 ID。这 timestamp 字段包含发布时间。 """ 导入base64

print("""This Function was triggered by messageId {} published at {}
""".format(context.event_id, context.timestamp))

if 'data' in event:
    name = base64.b64decode(event['data']).decode('utf-8')
else:
    name = 'World'
print('Hello {}!'.format(name))

云函数部署成功,但是每当我在日志中向触发器主题发布消息时,我都看不到任何函数执行语句。

我已经验证我只调用 main 函数并发布到正确的 pubsub 主题。

我看不到任何错误语句,因此无法调试。

任何建议都会有所帮助

【问题讨论】:

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


    【解决方案1】:

    我在python 3.8 运行时测试了您的代码功能,一切正常,您是否使用相同的发布/订阅主题来推送新消息?

    这是我在计算机上用来发送 pubsub 消息的代码。

    from google.cloud import pubsub_v1
    
    publisher = pubsub_v1.PublisherClient()
    # The `topic_path` method creates a fully qualified identifier
    # in the form `projects/{project_id}/topics/{topic_id}`
    topic_path = publisher.topic_path("myprojectID", "test")
    
    for n in range(1, 10):
        data = u"Message number {}".format(n)
        # Data must be a bytestring
        data = data.encode("utf-8")
        # When you publish a message, the client returns a future.
        future = publisher.publish(topic_path, data=data)
        print(future.result())
    
    print("Published messages.")
    

    requirements.txt

    google-cloud-pubsub
    

    这是完整的功能代码

    import base64
    
    def hello_pubsub(event, context):
         print("""This Function was triggered by messageId {} published at {}
         """.format(context.event_id, context.timestamp))
    
         if 'data' in event:
              name = base64.b64decode(event['data']).decode('utf-8')
         else:
              name = 'World'
         print('Hello {}!'.format(name))
    
    

    预期输出

    This Function was triggered by messageId 1449686821351887 published at 2020-08-20T21:26:30.600Z
    

    日志可能会在 stackdriver 上延迟 10-30 秒

    【讨论】:

    • 您好 Hernández,感谢您的回复。是的,我正在手动将消息发布到 pubsub 主题。我什至尝试创建一个新的云函数并粘贴相同的代码。功能部署没问题,但我在堆栈驱动程序中看不到任何日志。我尝试在云功能下的测试选项卡中传递 JSON 值。函数执行正常,没有任何错误,但云函数没有日志。我仔细检查了缩进,验证了获取调用的函数是相同的,发布到同一个主题。奇怪的是我没有收到任何错误,所以调试起来非常困难
    • @ArvindSharma 我建议您打开Public issue tracker 以找出您的函数未记录的原因
    猜你喜欢
    • 2021-07-12
    • 2020-08-30
    • 2021-07-04
    • 2021-10-20
    • 1970-01-01
    • 1970-01-01
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多