java - 从 Java 启动 CherryPy 导致没有响应答案

标签 java python cherrypy external-process

我有一个Python项目,我为它创建了一个CherryPy-Webservice-Wrapper来通过Java客户端(特别是一个自行开发的Eclipse插件)访问它。 CherryPy-Server 也作为外部进程从 Java 启动:

Runtime.getRuntime().exec("python C:/Coding/Projects/p1/CherryPyServer.py " + port);

要从 Java 客户端操作 CherryPy-Server,我使用以下命令:

new URL("http://localhost:" + port + "/" + conf).openStream();

为了进行测试,我还使用浏览器(Google Chrome)访问 CherryPy。但过了一段时间,对于新的请求,CherryPy 在 Java 和 Chrome 中都不再使用react(Chrome 显示一个缓慢向左旋转的轮子),这意味着客户端不会从 CherryPy 得到答案。这种情况的发生是不可重现的,所以我永远无法说出它何时发生。而且,只有当我从 Java 启动 CherryPy 作为外部进程时,才会发生这种情况。当我将 CherryPy 作为“正常”服务启动时,不会出现此问题。

我的 CherryPy-Python-Project 有许多 stdout 和 stderr 输出,也许与此有关?

注意:切换到 Jython 不是一个选项(因为我需要 c_types-library)

最佳答案

除了 jwalker's comment关于 STDOUT 缓冲区 - 也许尝试将 STDOUT 和 STDERROR 通过管道传输到/dev/null,在较新版本的 bash 中将是:

python mycherrypyserver.py &> /dev/null

我还建议您查看您的 CherryPy session (如果您已启用它)。 session 锁定可能会阻止同一客户端查看另一个请求。参见这里:http://blog.schmichael.com/2007/09/20/session-locking-and-performance-in-cherrypy/

关于java - 从 Java 启动 CherryPy 导致没有响应答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26882910/

相关文章:

java - 将 JScrollPane 添加到 JTable 组件

java - Linux 上的 TCP 打洞和 setReuseAddress()

python - 为什么我在第 10 行收到无效语法?

java: Runtime.exec() Thread 和 errorOutput, readLine

java - 如何传递 json 文件或对象来启动 Cloud Foundry 中的应用程序?

python - 将 Numpy 数组 reshape 为多维数组

Python Pandas Dataframe 创建列作为字符串在另一列中出现的次数

Python 3.2 Cherrypy 3.2.3 ssl_module pyopenssl 错误

python - 如何在将数据编码为 JSON 之前将数据从 SQLite 数据库中读取到字典中?

python - 如何通过 CherryPy 摘要身份验证获取用户名