我正在使用web.py中的一个应用程序,该应用程序可以通过带按钮的网站向设备发送命令。
我知道在我的网站上推送了哪些按钮,我在python serverprogram中得到了一些参数。 Python程序 - >从SQLite数据库中获取基本命令 - >添加接收的参数。但我需要通过以太网(简单套接字连接)同时建立与远程设备的连接,以将这些命令发送到设备。这就是我被卡住的地方。
所以我的网站工作正常,我还有一个小的单独的终端程序,只是与设备建立连接,并有一个简单的终端接口发送命令。所以基本上我有程序的两个主要部分工作,但不是同时,我无法弄清楚如何将它们组合在一起。
我一直在阅读一些信息,让网络服务器在一个单独的线程中运行,或者我每次从网站获取信息(命令/参数)时都必须连接并关闭设备的套接字连接?有人能帮我推动正确的方向吗?
注意:服务器正在Raspberry Pi上运行
答案 0 :(得分:0)
是的,您的问题似乎是由套接字连接不是线程安全引起的。
对web.py服务器的每个请求都在自己的线程中运行,如果要访问与设备的套接字连接,则必须使用锁或管理连接池,如果您的设备支持多个连接。
要强制web.py在单线程模式下运行,请参阅以下答案:
Forcing single threaded request handling with web.py
请注意,您不必锁定所有请求(如在该答案中),并且可能仅将锁定放在使用连接的代码部分。