我有一个GCE应用程序,由一个Python脚本组成,它有一些长时间运行的函数(其中大多数是查询数据库并将结果发送到某处)。当脚本挂起这些运行时间较长的任务时,似乎没有任何内容被打印到Stackdriver日志中,甚至出现在脚本挂起位置之前的print()
语句。这看起来像是计算引擎或Stackdriver中的bug,使得调试脚本非常困难(例如,我看不到最后一个成功的print
语句发生在哪里)
我更希望这个bug只是被修复,而不是必须添加logging
模块,因为设置它似乎有很大的开销
Tags:
根据unix.stackexchange.com中的this answer,当进程的输出被重定向到终端以外的对象时,操作系统可能会将输出临时存储在缓冲区中。缓冲输出通过减少系统调用和IO操作的数量来提高效率
缓冲输出可以从python脚本或应用程序中手动刷新
print
函数上设置flush
标志。print('foo', flush=True)
sys.stdout
。print 'foo'; sys.stdout.flush()
相关问题 更多 >
编程相关推荐