Google Pub/Sub - 向主题发布消息后,本地函数未找到事件数据
Google Pub/Sub - No event data found from local function after published message to topic
我正在使用 Functions Framework with Python alongside Google Cloud Pub/Sub Emulator。我遇到了从已发布消息到主题触发的事件的问题,其中没有找到该函数的事件数据。请参阅下面的更多详细信息。
- 在
http://localhost:8085
和 project_id 下启动 Pub/Sub 模拟器 local-test
。
- 带有签名类型的旋转函数:
http
在 http://localhost:8006
下。
- 给定一个带有签名类型的后台云函数:
event
:
- Topic is created 作为
test-topic
- 函数在
http://localhost:8007
下启动。
- Create push subscription
test-subscription
对于 test-topic
对于端点:http://localhost:8007
当我通过 Postman 中的 POST 请求从 http://localhost:8006
向 test-topic
发布消息时,我收到 200 响应以确认消息已成功发布。表示 http://localhost:8007
的函数作为 event
执行,如函数框架的日志中所示。但是,在调试触发函数时,没有 event
的实际数据。
有人遇到过这种情况吗?任何ideas/suggestions关于这个?
也许,这是真的? #23 Functions Framework does not work with the Pub/Sub emulator
已安装的模块
- 函数框架==2.1.1
- google-cloud-pubsub==2.2.0
python版本
- 3.8.8
我将关闭此 post,因为该问题确实是去年报告的 bug。
更新:作为解决此错误之前的解决方法,我将下面的 code 在本地复制到 view_func
嵌套函数内的 functions_framework/__init__.py
,在 _event_view_func_wrapper
函数内。
if 'message' in event_data:
if 'data' not in event_data:
message = event_data['message']
event_data['data'] = {
'data': message.get('data'),
'attributes': message.get('attributes')
}
我正在使用 Functions Framework with Python alongside Google Cloud Pub/Sub Emulator。我遇到了从已发布消息到主题触发的事件的问题,其中没有找到该函数的事件数据。请参阅下面的更多详细信息。
- 在
http://localhost:8085
和 project_id 下启动 Pub/Sub 模拟器local-test
。 - 带有签名类型的旋转函数:
http
在http://localhost:8006
下。 - 给定一个带有签名类型的后台云函数:
event
:
- Topic is created 作为
test-topic
- 函数在
http://localhost:8007
下启动。 - Create push subscription
test-subscription
对于test-topic
对于端点:http://localhost:8007
当我通过 Postman 中的 POST 请求从 http://localhost:8006
向 test-topic
发布消息时,我收到 200 响应以确认消息已成功发布。表示 http://localhost:8007
的函数作为 event
执行,如函数框架的日志中所示。但是,在调试触发函数时,没有 event
的实际数据。
有人遇到过这种情况吗?任何ideas/suggestions关于这个?
也许,这是真的? #23 Functions Framework does not work with the Pub/Sub emulator
已安装的模块
- 函数框架==2.1.1
- google-cloud-pubsub==2.2.0
python版本
- 3.8.8
我将关闭此 post,因为该问题确实是去年报告的 bug。
更新:作为解决此错误之前的解决方法,我将下面的 code 在本地复制到 view_func
嵌套函数内的 functions_framework/__init__.py
,在 _event_view_func_wrapper
函数内。
if 'message' in event_data:
if 'data' not in event_data:
message = event_data['message']
event_data['data'] = {
'data': message.get('data'),
'attributes': message.get('attributes')
}