【问题标题】:web.py - server and simultaneous socket connectionweb.py - 服务器和同时套接字连接
【发布时间】:2013-09-16 15:07:15
【问题描述】:

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

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

所以我的网站正常运行,我还编写了一个单独的小型终端程序,用于与设备建立连接,并使用简单的终端接口发送命令。所以基本上我有程序的两个主要部分工作,但不是同时工作,我不知道如何将它们组合在一起。

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

注意:服务器在树莓派上运行

【问题讨论】:

  • 我不知道文字墙恋物癖有多普遍。也许一些结构会有所帮助。
  • 你真的需要更好地格式化这个单独的段落。没有人愿意阅读如此庞大的文本块。此外,尽可能提供代码示例 - 这将帮助我们更快地为您提供帮助 :-)

标签: python sockets sqlite web.py


【解决方案1】:

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

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

要强制 web.py 在单线程模式下运行,请看下面的答案:

Forcing single threaded request handling with web.py

请注意,您不必锁定所有请求(如该答案所示),并且可以仅对使用连接的代码部分进行锁定。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-10
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多