在python和java之间发送短信

时间:2018-12-28 18:54:58

标签: java python inputstream ipc bufferedreader

我的Java程序调用一个python脚本,该脚本向其发送小的JSON字符串。我使用流程生成器启动python脚本,然后将inputstream包装在inputstreamreaderBufferedReader中。

我注意到的是,该程序一直等到发送了一定数量的消息后才将数据传输到我的Java应用程序。

我将此问题追溯到我从流程中获得的原始InputStream,因为即使我不使用BufferedReader单独使用它,我仍然会遇到此问题。当我增加消息的大小时,它们的传输没有任何问题。但是我只需要每隔几秒钟发送一次短消息。此行为使我认为inputstream具有一些内部缓冲区,在传输数据之前它会等待填充。 有什么帮助吗?

1 个答案:

答案 0 :(得分:0)

您还没有提供足够的详细信息来确切了解正在发生的事情(MCVE会很好;)),但是:

  • 您显然有问题,并且
  • 听起来好像确实与“缓冲”有关。

因此我对“ flush()”的建议。

问:如果您“刷新”缓冲区-谁需要这样做?读者还是作家?

A:当然是 WRITER :)

听起来您的“作家”是Python。听起来也好像Python应用正在写到stdout。

这可能会有所帮助:

  

How often does python flush to a file?

     

对于文件操作,Python使用操作系统的默认值   缓冲,除非您对其进行配置,否则进行配置。您可以指定一个   缓冲区大小,无缓冲或行缓冲。

     

例如,open函数使用缓冲区大小参数。

     

http://docs.python.org/library/functions.html#open

     

“可选的缓冲参数指定文件的所需缓冲   大小:“

0 means unbuffered,
1 means line buffered,
any other positive value means use a buffer of (approximately) that size.

A negative buffering means to use the system default, which is usually 
line buffered for tty devices and fully buffered for other files.

If omitted, the system default is used.