python和java之间发送短信
Posted
技术标签:
【中文标题】python和java之间发送短信【英文标题】:Sending short messages between python and java 【发布时间】:2018-12-28 18:54:57 【问题描述】:我的 java 程序调用一个 python 脚本,向它发送小的 JSON 字符串。我使用进程构建器启动 python 脚本,然后将inputstream
包装在inputstreamreader
和BufferedReader
中。
我注意到的是,程序会一直等待,直到发送了一定数量的消息才能将数据传输到我的 java 应用程序。
我将此问题追溯到从 Process 获得的原始 InputStream,因为即使我在没有 BufferedReader 的情况下单独使用它,我仍然会遇到此问题。当我增加消息的大小时,它们可以毫无问题地传输。但我只需要每隔几秒钟发送一次短消息。这种行为让我认为输入流有一些内部缓冲区,它在传输数据之前等待填充。 有什么帮助吗?
【问题讨论】:
问:你试过“flush()”吗? 请问什么对象公开了这个方法? 【参考方案1】:您还没有真正提供足够的细节来确切地知道发生了什么(MCVE 会很好;)),但是:
你显然有问题,并且 听起来可能确实与“缓冲”有关。因此我对“flush()”的建议。
问:如果您“刷新”缓冲区 - 谁需要这样做?读者还是作者?
A:当然是作家 :)
听起来你的“作家”是 Python。听起来 Python 应用程序正在写入标准输出。
这可能会有所帮助:
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.
【讨论】:
谢谢你!就是这样:)我只是在python的打印命令中设置了flush参数,它运行良好。没有考虑,因为当我单独运行脚本时,我可以在终端上看到数据。你对此有什么解释吗?以上是关于python和java之间发送短信的主要内容,如果未能解决你的问题,请参考以下文章