不同语言和设备之间的请求速度不同

如何解决不同语言和设备之间的请求速度不同

我一直在尝试通过 python 库 phue - https://github.com/studioimaginaire/phue 对飞利浦色调灯运行多个命令。我遇到的问题是,在 Windows 设备上,每个请求可能需要 5-6 秒,

# PYTHON

import time
from phue import Bridge

# Find and connect to bridge
b = Bridge('<Hue Bridge IP>')
b.connect()

# This takes 5-6 seconds per
b.set_group(1,'on',True)
# Also it does not matter if it a singular light or a group of lights
b.set_group(1,'hue',7000)

我尝试离开 phue 库并用纯请求替换它,如下所示:

# PYTHON

# URL
url = "<The Hue API URL + Key + Specifications>"

# Body
data_on = {"on":True,"sat":254,"bri":254,"hue":c}
data_off = {"on":False}

# Occasionally exceeds this timeout
r = requests.put(url,json.dumps(data_on),timeout=5)

然后我尝试在 Java 中使用 ZeroOne3010 的库运行类似的命令 - https://github.com/ZeroOne3010/yetanotherhueapi(yetanotherhueapi 或 yahueapi),示例脚本在这里

// JAVA

// Colours
java.awt.Color red = new java.awt.Color(255,0);

// Find Room + Bridge
final String bridgeIp = <IP>;
final String apiKey = <KEY>;
final Hue hue = new Hue(bridgeIp,apiKey);
final Room room = hue.getRoomByName("<ROOM NAME>").get();

// Find Light + Set to red and on
Light light1 = room.getLightByName("<LIGHT NAME>").get();
light1.setState(State.builder().color(Color.of(red)).on());

这比在带有请求或先前库的 python 中运行速度快了不到一秒,所以在这一点上,python 似乎是这里的问题,但是,不是吗?

然后我加载了一个 raspBerry pi 并运行了之前的两个 python 脚本,它们的运行延迟与对 Hue API 的 java 请求类似

所以我的问题是如何或为什么会发生这种情况,更重要的是有没有办法防止这种情况发生?我找不到到底是什么弱点,windows 可以快速发出请求 python 可以快速发出请求,但有时不会。

关于两种设备的额外信息

连接:

  • Ras Pi 没有 ethranet,与运行 python 和 java 的 PC 相比具有更低的上下和更高的 ping/
  • PC 正在使用以太网电缆/有线连接

操作系统/型号:

  • 运行 rasbian OS 32 位的 Ras Pi 4(4GB RAM)
  • Windows 10 除了有线连接之外没有其他连接方法(比 pi 规格高得多)

Python 版本:

  • Ras Pi 4 运行 3.8
  • PC 认运行 3.9 并安装了 3.7 + 2.7

两者都使用 venv 作为没有安装 anaconda 的虚拟环境。

我一直认为这可能与防火墙有关,但在搜索它时,我收到一页又一页关于如何在 Windows 中加快互联网速度的几乎相同的文章

这不是问题,因为 PC 的连接速度更快。

所以有什么想法吗? - 对不起,如果我错过了任何重要的事情。 (快速注释改造,适用于 java - https://square.github.io/retrofit/ 也在一秒范围内,pi 和 PC 都在一米之内)我也尝试在我的 IDE (PyCharm) 之外运行它,例如在 pi 上,因为我在终端中运行它,但在 CMD 中没有成功。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?