如何解决为什么Stackdriver会合并多个消息?
我有一个GAE应用程序在Python中使用print()写入stdout。 Stackdriver将其捡起并正确地将输出正确解释为JSON负载,除了每三万条消息中的几千个实际上将多个JSON对象组合到单个日志条目中并将其解释为文本负载外,其余的几千个除外希望它不这样做。
我很沮丧,因为我什至将print()移到了一个单独的线程上,并在每个print()之间引入了时间延迟,所以我不相信这是有原因的。我还进行了无休止的搜索,找到遇到同样问题的人,但没有发现任何问题。
这是代码-write()
包含一个消息,该消息被发布到PubSub主题:
def write(self,input):
self.future = self.publisher.publish(self.topic_name,input)
self.future.add_done_callback(self.callback)
log_thread = threading.Thread(target=self.log_message,kwargs={"input": input})
log_thread.start()
def log_message(self,input):
event = json.loads(input.decode("utf-8"))
event['topic'] = self.topic_name # the pubsub topic address
event['publish_time'] = datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S")
print(payload)
time.sleep(0.01)
预期输出到stackdriver的日志为:
{"unique_event_id": "x","hashed_msisdn": "x","event_timestamp": 1600449466477041,"event_name": "random_event","topic": "projects/x/topics/y","publish_time": "2020-09-21 17:32:09"}
相反,我有时得到的是2或3个事件,它们在解释为文本的单个日志行中分组在一起:
{"unique_event_id": "x_event_1","publish_time": "2020-09-21 17:32:09"}{"unique_event_id": "x_event_2","event_timestamp": 1600449466477123,"event_name": "some_other_random_event","topic": "projects/x/topics/z","publish_time": "2020-09-21 17:32:09"}
我唯一能看到的模式是这些事件簇的发布时间(由datetime.utcnow()
确定)。
我非常感谢您的一些见解/指导。谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。