如何让python脚本监听来自另一个脚本的输入

时间:2013-09-04 14:13:31

标签: python serial-port cgi

我有一种情况,我需要一个python脚本在连续循环中运行,我需要从另一个脚本传递参数,该脚本将在动作发生时运行。

第二个脚本将由一个使用cgi的网站触发,我的工作正常。连续循环应该接受cgi脚本读出的参数(然后通过串口发送信息)。

对于特定问题,我不能让cgi脚本直接通过串口发送数据,因为每次运行时都会重置串口。

我似乎无法找到有关此类设置的任何信息。是否有任何方法或库可供我们研究这种或更好的方法来接近它?

2 个答案:

答案 0 :(得分:10)

我会使用套接字连接。基本上,您正在编写一个非常简单的服务器,一次只能连接一个

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(("localhost", 9988))
s.listen(1)

while True:
    conn, addr = s.accept()
    data = conn.recv(1024)
    conn.close()
    my_function_that_handles_data(data)

s.accept()是一个阻止通话。它等待连接。然后你读一下连接。在这种情况下,我们假设参数的长度仅为1024字节。然后我们对从套接字收到的数据做一些事情并等待另一个连接。

客户端看起来像这样:

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("localhost", 9988))
s.sendall('My parameters that I want to share with the server')
s.close()

关于这一点的好处是,将来如果客户端和服务器不再在同一台机器上运行,那么将"localhost"更改为您要访问的实际IP地址或域名是一件简单的事情。击中。

答案 1 :(得分:1)

您所描述的内容的一般概念称为进程间通信(Python IPC)。

在python中,这可以通过socketssignals完成。

还有更高级别的接口构建在/使用套接字之上; asyncoreasynchat