Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 打印功能能否在GCE应用程序中可靠使用?_Python_Google Compute Engine_Stackdriver - Fatal编程技术网

Python 打印功能能否在GCE应用程序中可靠使用?

Python 打印功能能否在GCE应用程序中可靠使用?,python,google-compute-engine,stackdriver,Python,Google Compute Engine,Stackdriver,我有一个GCE应用程序,由一个Python脚本组成,该脚本具有一些长时间运行的函数(其中大多数是查询数据库并将结果发送到某处)。似乎当脚本挂起其中一个运行时间较长的任务时,没有任何内容打印到Stackdriver日志中,甚至print()语句出现在脚本挂起的位置之前。这看起来像是Compute Engine或Stackdriver中的错误,使得调试脚本非常困难(例如,我看不到上次成功的print语句发生在哪里) 我更希望只修复这个bug,而不必添加日志记录模块,因为设置这个模块似乎有很大的开销。

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

我更希望只修复这个bug,而不必添加
日志记录
模块,因为设置这个模块似乎有很大的开销。

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

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

  • 在python3中,在
    print
    函数上设置
    flush
    标志。
    • print('foo',flush=True)
  • 在python2中,打印后刷新系统标准输出。
    • 打印“foo”;sys.stdout.flush()

这似乎有效!如果你把它作为一个答案,我会接受。这似乎很奇怪,但这是必要的,它只发生在计算引擎上,即使在谷歌云Shell中,打印也不需要刷新