python web界面整合 tail_如何使用Python Tornado在HTTP上实现“ tail”?
我正在尝试使用Python在HTTP上实现“ tail -f”之类的东西.当前,我正在尝试使用Tornado,但即使我执行异步请求,它一次也只能处理一个连接.
import socket
import subprocess
import tornado.gen as gen
import tornado.httpserver
import tornado.ioloop
import tornado.iostream
import tornado.options
import tornado.web
from tornado.options import define, options
define("port", default=8888, help="run on the given port", type=int)
define(
"inputfile",
default="test.txt",
help="the path to the file which we will 'tail'",
type=str)
class MainHandler(tornado.web.RequestHandler):
@tornado.web.asynchronous
@gen.engine
def get(self):
print "GOT REQUEST"
inputfile = open(options.inputfile)
p = subprocess.Popen(
"./nettail.py",
stdin=inputfile,
stdout=subprocess.PIPE)
port_number = int(p.stdout.readline().strip())
self.write("
")
self.write("Hello, world
")
self.flush()
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0)
stream = tornado.iostream.IOStream(s)
yield gen.Task(stream.connect, ("127.0.0.1", port_number))
while True:
data = yield gen.Task(stream.read_until, "
")
self.write(data)
self.flush()
def main():
tornado.options.parse_command_line()
application = tornado.web.Application([
(r"/", MainHandler),
])
http_server = tornado.httpserver.HTTPServer(application)
http_server.listen(options.port)
tornado.ioloop.IOLoop.instance().start()
if __name__ == "__main__":
main()
我正在启动的过程是输出到套接字的简单“尾巴”.
import random
import socket
import sys
import time
#create an INET, STREAMing socket
s = socket.socket(
socket.AF_INET, socket.SOCK_STREAM)
# Open the connection.
try:
for attempt_number in xrange(5):
port_number = random.randint(9000, 65000)
try:
s.bind(("localhost", port_number))
except socket.error:
continue
# We successfully bound!
sys.stdout.write("{0}".format(port_number))
sys.stdout.write("
")
sys.stdout.flush()
break
#become a server socket
s.listen(5)
# Accept a connection.
try:
(clientsocket, address) = s.accept()
while True:
line = sys.stdin.readline()
if not line:
time.sleep(1)
continue
clientsocket.sendall(line)
finally:
clientsocket.close()
finally:
s.close()
./nettail.py可以正常工作,但是Tornado HTTP服务器一次仅处理一个请求.
我想使用长期运行的持久HTTP连接来执行此操作,因为它与旧版浏览器兼容.我了解Web套接字就是在现代浏览器中的工作方式.
编辑:
我在Linux和Solaris而不是Windows上运行它.这意味着我可以在文件上使用tornado.iostream,而不是通过套接字程序使用.不过,这不是文档功能,因此我为每个连接启动一个套接字程序.
python web界面整合 tail_如何使用Python Tornado在HTTP上实现“ tail”?相关推荐
- 8个炫酷又好用的 Python 工具界面编程不再复杂,Python工具PyCharm使用技巧
Python 是一种开源编程语言,用于 Web 编程.数据科学.人工智能和许多科学应用.学习 Python 使程序员能够专注于解决问题,而不是专注于语法,其丰富的库赋予它完成伟大任务所需的力量. 推荐 ...
- Python web后端开发框架 Django 、Flask、Tornado
由于Python的简洁 易读 强大 高效 现在Python应用在文件处理.网络编程.数据库编程.游戏.Web开发.数据分析.机器学习等各个领域. 就Web开发而言,为了提高开发效率,应运而生了很多框 ...
- python登录界面源码_基于Python的自媒体小助手---登录页面的实现代码
核心技术:Python3.7 GUI技术:Tkinter (Python已经内置) 好多文章写Python GUI之tkinter窗口视窗教程大集合(看这篇就够了) 我看了N遍也没够好多东西都没有就基 ...
- python软件界面-用Html来写Python桌面软件的UI界面-htmlPy
在写Python软件的时候,一般用命令行就行了,但是某些特殊情况下(主管要求),需要写一个还能看的界面提供给客户的情况下,那就必须要用到Python的UI包. 试用了很多种: 因为一直用的Python ...
- python语言能够整合各类程序代码-python语言概述
python语言的发展 python语言诞生于1990年,由Guide van Rossum设计并领导开发. python语言是开源项目的优秀代表,其解释器的全部代码都是开源的. 编写Hello程序 ...
- linux部署python web项目 详细_linux下nginx+python+uwsgi部署总结(django+web.py)
ara on 2011年10月24日 17:23 # 按您文章进行了配置,出现错误,请教问题原因 nginx.conf 配置: server { # python/uwsgi listen 80; r ...
- python opencv 界面按钮_如何使用Python构建简单的UI?
借助Streamlit框架,使用用户界面展示Python项目变得前所未有的简单,你可以仅仅使用Python代码来构建基于浏览器的UI.本次演示将为迷宫求解器程序构建UI.StreamlitStream ...
- python交互界面数据分析_如何用 Python 和 Streamlit 做交互式数据分析产品?
「本文参与少数派 2019 年度征文 + 效率有心得」 不用学前端编程,你就能用 Python 简单高效写出漂亮的交互式 Web 应用,将你的数据分析成果立即展示给团队和客户. 痛点 从我开始折腾数据 ...
- Python WEB开发:1024程序员节用Tornado框架制作简易【表白墙】网站
嗨害大家好鸭! 我是小熊猫❤ 眼瞅着1024程序员节就快到了 不知道会不会有人被表白- 我先来自己做一个表白墙 给我的好兄弟提供一个表白的平台哈哈哈哈 有什么python相关报错解答自己不会的.或者源 ...
最新文章
- Spring Mock单元测试
- 基于数组实现循环队列(基于Java实现)
- stm8s编译器查看代码量大小的软件
- FastReport4.6程序员手册_翻译 转
- Linux关闭selinux
- [译]R语言——Shiny框架之构建(一):1.结构——1.独立应用程序——2.双文件式Shiny应用
- java中的object... args参数
- C#程序之二 -- 数独小游戏(1. UI设计)
- Linux自动配置部署,企业级自动化部署方案——ansible实现tomcat自动安装和配置,...
- intel h61 linux驱动下载,intel h61主板驱动
- Win10清理C盘垃圾
- 投资理财入门笔记【不定期更新编辑】
- linux根文件系统与内核合二为一
- C#调用Outlook发送邮件
- HH SaaS电商系统的虚拟资金账户(钱包余额)设计
- python tokenize怎么用_tokenize -- 对 Python 代码使用的标记解析器 — Python 3.7.9 文档...
- 算法 — 数字三角形
- TI芯片(335x、437x、572x)uboot设置logo居中
- 讲讲React中的State和Props
- 一篇文章看明白 HashMap 工作原理
热门文章
- 我一个女孩子居然做了十年硬件。​。。
- 今年电子设计竞赛取消了?
- 模电这么学,谁还会说不懂晶体管?
- python中、变量指向的对象可以发生变化吗_python中的引用传递,可变对象,不可变对象,list注意点...
- python异常处理的作用_python之路——异常处理
- linux内核启动后门,Linux内核模块入门之简单内核后门
- php 请求url没有扩展名,apache – 将.php重定向到无扩展名,并在没有.php的情况下创建url...
- php性能需求,PHP语言性能考察
- 961计算机基础综合pdf,2017-2018年北航科学与技术教育961计算机基础综合考研大纲重难点.pdf...
- vue商城源码_一个标星 5.2k+ 的牛逼开源商城系统