以下是使用fifo的方法:
# receiver.py
import os
import sys
import atexit
# Set up the FIFO
thefifo = 'comms.fifo'
os.mkfifo(thefifo)
# Make sure to clean up after ourselves
def cleanup():
os.remove(thefifo)
atexit.register(cleanup)
# Go into reading loop
while True:
with open(thefifo, 'r') as fifo:
for line in fifo:
print "Hello", line.strip()
Run Code Online (Sandbox Code Playgroud)
您可以在shell会话中使用它
$ python receiver.py &
$ echo "Alice" >> comms.fifo
Hello Alice
$ echo "Bob" >> comms.fifo
Hello Bob
Run Code Online (Sandbox Code Playgroud)
小智 5
有几种选择
1) 如果守护进程应该接受来自其他系统的消息,则使守护进程成为 RPC 服务器 - 使用 xmlrpc/jsonrpc。
2) 如果都是本地的,则可以使用 TCP 套接字或命名 PIPE。
3)如果有大量客户端同时连接,可以使用select.epoll。
您可以使用几种机制,但一切都归结为使用 IPC(进程间通信)。
现在,您将使用的实际机制取决于您可以实现的细节,但一个好的解决方案是使用 zmq 之类的东西。
检查 zmq 上的 pub/sub 的以下示例
http://learning-0mq-with-pyzmq.readthedocs.org/en/latest/pyzmq/patterns/pubsub.html
还有这个
http://learning-0mq-with-pyzmq.readthedocs.org/en/latest/pyzmq/multisocket/zmqpoller.html
为非阻塞方式。
| 归档时间: |
|
| 查看次数: |
1318 次 |
| 最近记录: |