为什么接收数据的方式与通过UDS发送数据的方式不同?

2024-04-28 21:31:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在研究一个从应用程序记录日志的位UDS,然后使用另一个进程将日志发送到外部服务器。总的来说,它似乎工作得很好,但当我测试它时,我发现如果我在for循环中发送一些日志,当从套接字读取流时,它包含更多的“消息”

您可以在这里https://github.com/MattBlack85/alf找到接收日志的代码(安装后可以使用alf /tmp/alf.sock http://127.0.0.1:8080运行)

您可以在这里找到一个发送日志的小示例https://gist.github.com/MattBlack85/86d620a306f16416a7f96a1a035984dc

你可以在这里找到一个小的web服务器让alf发送日志https://gist.github.com/MattBlack85/0638ef87eb077eb46879d6c90a30cf7a

如果for循环没有睡眠,结果是这样的

[2018-12-18 13:12:39,798] [DEBUG] alf.worker - MSG from queue: b'{"time":"2018-12-18 13:12:39,797","name":"test","levelname":"DEBUG","message":"test 0","pathname":"logalf.py"}{"time":"2018-12-18 13:12:39,798","name":"test","levelname":"DEBUG","message":"test 1","pathname":"logalf.py"}{"time":"2018-12-18 13:12:39,798","name":"test","levelname":"DEBUG","message":"test 2","pathname":"logalf.py"}{"time":"2018-12-18 13:12:39,798","name":"test","levelname":"DEBUG","message":"test 3","pathname":"logalf.py"}{"time":"2018-12-18 13:12:39,798","name":"test","levelname":"DEBUG","message":"test 4","pathname":"logalf.py"}{"time":"2018-12-18 13:12:39,798","name":"test","levelname":"DEBUG","message":"test 5","pathname":"logalf.py"}'

而如果我放一个1毫秒的小间隔,所有的信息都会一个接一个地收到。我试图关闭我的操作系统上所有繁重的进程,让CPU空闲,但没有工作。这不是一个大问题,因为我可以在格式化JSON日志和拆分从套接字读取的内容时添加终止符,并将结果列表的每一项都放入队列中,但是为什么我会看到这个呢


Tags: namepyhttpsdebugtestgithubcommessage