我在Python中有这个代码。
有了这个,我可以将ZeroMQ流的内容输出到文件中。只有每10秒写一个文件似乎并不真正有用,并且会花费很多性能。
现在我想在网页中显示内容。我见过PyBottle
存在,在Python中创建了一个Web服务器。
如何在代码中集成PyBottle
,以便输出流的最新消息?我在 PyBottle
-loop中考虑了while
的代码。
但是,我(不必要地)创建一个新的Web服务器实例吗?
我该如何处理?
PyBottle
的示例:
from bottle import route, run, template
@route( '/hello/<name>' )
def index( name ):
return template( '<b>Hello {{name}}</b>!', name = name )
run( host = 'localhost', port = 8080 )
我的Python代码:
#!/usr/bin/env python2
from gzip import GzipFile
from cStringIO import StringIO
from subprocess import call
pass; import zmq
context = zmq.Context()
subscriber = context.socket( zmq.XSUB )
subscriber.connect( "tcp://pubsub.*******.nl:7664" )
subscriber.send( chr( 0x01 ) # { 0x01: ZMQ_XSUB.subscribe,
+ "/RIG/VehiclePositions" # 0x00: ZMQ_XSUB.unsubscribe
) # }
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()
答案 0 :(得分:0)
右,
而是将PyBottle
或其他任何Web服务框架扩展为仅实例化一次(可以稍后使用负载平衡工作程序,以进一步增加体系结构的性能范围),同时它还创建自己的ZeroMQ Context()
-IO-datapump引擎。这使得Web服务方法能够与其他内容生成代理进行通信,并预先构建实际的动态内容,既可以是先验的,也可以是即时的。
您的架构的其余部分将变得更智能,更轻量级,因为您的所有交互都变为基于信令/消息传递,从而避免文件系统的文件损坏。
.setsockopt()
, zmq.CONFLATE
,通过zmq.IMMEDIATE
远程终端I / O成本+效果进行微调和其他ISO / OSI-L3层参数以及许多进一步的性能技巧,甚至可以从现实世界 distributed-computing 生态系统中的受限制的代码执行环境中挤出最大性能。