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

问题描述

我一直在尝试通过 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.JdbcOdbc...