python和java之间发送短信

Posted

技术标签:

【中文标题】python和java之间发送短信【英文标题】:Sending short messages between python and java 【发布时间】:2018-12-28 18:54:57 【问题描述】:

我的 java 程序调用一个 python 脚本,向它发送小的 JSON 字符串。我使用进程构建器启动 python 脚本,然后将inputstream 包装在inputstreamreaderBufferedReader 中。

我注意到的是,程序会一直等待,直到发送了一定数量的消息才能将数据传输到我的 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之间发送短信的主要内容,如果未能解决你的问题,请参考以下文章

python:消息推送 - 发送短信(以聚合数据为例)

Java 发送和接收短信。免费短信网关?

推广+发送短信

python利用第三方模块,发送短信验证码

发送短信验证码和邮箱验证码—Java实现

python 发送短信