Python 打印功能能否在GCE应用程序中可靠使用?
我有一个GCE应用程序,由一个Python脚本组成,该脚本具有一些长时间运行的函数(其中大多数是查询数据库并将结果发送到某处)。似乎当脚本挂起其中一个运行时间较长的任务时,没有任何内容打印到Stackdriver日志中,甚至Python 打印功能能否在GCE应用程序中可靠使用?,python,google-compute-engine,stackdriver,Python,Google Compute Engine,Stackdriver,我有一个GCE应用程序,由一个Python脚本组成,该脚本具有一些长时间运行的函数(其中大多数是查询数据库并将结果发送到某处)。似乎当脚本挂起其中一个运行时间较长的任务时,没有任何内容打印到Stackdriver日志中,甚至print()语句出现在脚本挂起的位置之前。这看起来像是Compute Engine或Stackdriver中的错误,使得调试脚本非常困难(例如,我看不到上次成功的print语句发生在哪里) 我更希望只修复这个bug,而不必添加日志记录模块,因为设置这个模块似乎有很大的开销。
print()
语句出现在脚本挂起的位置之前。这看起来像是Compute Engine或Stackdriver中的错误,使得调试脚本非常困难(例如,我看不到上次成功的print
语句发生在哪里)
我更希望只修复这个bug,而不必添加日志记录
模块,因为设置这个模块似乎有很大的开销。根据from,当进程的输出被重定向到终端以外的对象时,操作系统可能会将输出临时存储在缓冲区中。缓冲输出通过减少系统调用和IO操作的数量来提高效率
可以从python脚本或应用程序中手动刷新缓冲输出
- 在python3中,在
函数上设置print
标志。flush
print('foo',flush=True)
- 在python2中,打印后刷新系统标准输出。
打印“foo”;sys.stdout.flush()