【发布时间】:2014-08-08 06:05:55
【问题描述】:
我在服务器上有一个长时间运行的 Python 程序,它已经在一个串行端口上侦听消息并将它们转发到另一个串行端口。
我需要做什么才能让该程序接受来自网络服务器的数据(最终从笔记本电脑上的网络浏览器获取数据)?
目前我看到的选项是:
烧瓶() 解决方案在“ Communicating with python program running on server "服务器 似乎对我不起作用,因为 (我可能做错了) 长时间运行的 Python 程序似乎无法抢占 80 端口, 我猜是因为网络服务器已经在端口 80 上运行(服务其他页面)。
有一个将数据写入文件的 CGI 脚本,而长时间运行的脚本会从该文件中读取数据。我有点不愿意在闪存磨损可能成为问题的系统上执行此操作。
不知何故 (?) 转换长时间运行的脚本 到一个 FastCGI 脚本,其中包括它过去所做的一切以及从 Web 服务器接受数据的新内容。
不知何故 (?) 转换长时间运行的脚本 到一个 WSGI 脚本,其中包括它过去所做的一切以及从 Web 服务器接受数据的新内容。
编写一个简短的 web 脚本,让 web 服务器启动,它使用 asynchat / asyncore / sockets / twisted 与长时间运行的脚本进行通信,这似乎是为两台不同计算机之间的通信而设计的,所以看起来就像在长时间运行的 Python 脚本和运行在同一台服务器上的 Web 服务器(可能在它们之间有一个短时间的 CGI 脚本或 FastCGI 脚本)之间进行对话时矫枉过正。
也许还有其他选择?
网络服务器是否有标准的“pythonic”方式将数据传递给已经启动并运行的 Python 程序? (而不是更常见的 Web 服务器启动 Python 程序并将数据传递给新启动的程序的情况)。
(我怀疑不相关的细节:我的服务器在 Beaglebone Black 上运行的 Ubuntu Linux 上运行 Lighttpd)。
(也许这个问题应该移到https://softwareengineering.stackexchange.com/?)
【问题讨论】: