web.py - 服务器和同步套接字连接

时间:2013-09-16 15:07:15

标签: python sockets sqlite web.py

我正在使用web.py中的一个应用程序,该应用程序可以通过带按钮的网站向设备发送命令。

我知道在我的网站上推送了哪些按钮,我在python serverprogram中得到了一些参数。 Python程序 - >从SQLite数据库中获取基本命令 - >添加接收的参数。但我需要通过以太网(简单套接字连接)同时建立与远程设备的连接,以将这些命令发送到设备。这就是我被卡住的地方。

所以我的网站工作正常,我还有一个小的单独的终端程序,只是与设备建立连接,并有一个简单的终端接口发送命令。所以基本上我有程序的两个主要部分工作,但不是同时,我无法弄清楚如何将它们组合在一起。

我一直在阅读一些信息,让网络服务器在一个单独的线程中运行,或者我每次从网站获取信息(命令/参数)时都必须连接并关闭设备的套接字连接?有人能帮我推动正确的方向吗?

注意:服务器正在Raspberry Pi上运行

1 个答案:

答案 0 :(得分:0)

是的,您的问题似乎是由套接字连接不是线程安全引起的。

对web.py服务器的每个请求都在自己的线程中运行,如果要访问与设备的套接字连接,则必须使用锁或管理连接池,如果您的设备支持多个连接。

要强制web.py在单线程模式下运行,请参阅以下答案:

Forcing single threaded request handling with web.py

请注意,您不必锁定所有请求(如在该答案中),并且可能仅将锁定放在使用连接的代码部分。