GCE应用中是否可可靠地使用“打印”功能?

2024-04-28 11:07:29 发布

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

我有一个GCE应用程序,由一个Python脚本组成,它有一些长时间运行的函数(其中大多数是查询数据库并将结果发送到某处)。当脚本挂起这些运行时间较长的任务时,似乎没有任何内容被打印到Stackdriver日志中,甚至出现在脚本挂起位置之前的print()语句。这看起来像是计算引擎或Stackdriver中的bug,使得调试脚本非常困难(例如,我看不到最后一个成功的print语句发生在哪里)

我更希望这个bug只是被修复,而不是必须添加logging模块,因为设置它似乎有很大的开销


Tags: 模块函数引擎脚本应用程序内容logging时间
1条回答
网友
1楼 · 发布于 2024-04-28 11:07:29

根据unix.stackexchange.com中的this answer,当进程的输出被重定向到终端以外的对象时,操作系统可能会将输出临时存储在缓冲区中。缓冲输出通过减少系统调用和IO操作的数量来提高效率

缓冲输出可以从python脚本或应用程序中手动刷新

  • 在python3中,在print函数上设置flush标志。
    • print('foo', flush=True)
  • 在python2中,打印后冲洗sys.stdout
    • print 'foo'; sys.stdout.flush()

相关问题 更多 >