Ik heb dus een mooi Python-script wat via ZeroMQ een datastroom binnenhaalt (treinposities), en dat werkt perfect, en ik krijg om de tien seconden een mooie XML-feed binnen in het text-bestand. Maar dat moet ook zonder het schrijven van een bestand kunnen.
Op het huidige moment wordt constant de data in de ZeroMQ-datastroom weggeschreven naar een bestand.
Nu wil ik dit realtime kunnen outputten op een webservertje, en ik dacht zelf aan de PyBottle-plugin om een mini-webserver op te zetten.
Echter... hoe krijg ik de XML-feed van het huidige moment daarin te zien?
Hopelijk zijn er hier mensen die Python-kennis hebben, en snappen wat ik bedoel. Of als iemand het beter zou kunnen dan dit, let me know.
#!/usr/bin/env python2
from gzip import GzipFile
from cStringIO import StringIO
from subprocess import call
import zmq
context = zmq.Context()
subscriber = context.socket(zmq.XSUB)
subscriber.connect("tcp://pubsub.*******.nl:7664")
subscriber.send(chr(0x01) + "/RIG/NStreinpositiesInterface5") # 0x01 = subscribe, 0x00 = unsubscribe
x=0
while True:
multipart = subscriber.recv_multipart()
address = multipart[0]
contents = ''.join(multipart[1:])
contents = GzipFile('','r',0,StringIO(contents)).read()
filename="tmp/treinpos.txt"
file = open(filename,"w")
file.write(contents)
file.close()
subscriber.close()
context.term()