我正在尝试使用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”?相关推荐

  1. 8个炫酷又好用的 Python 工具界面编程不再复杂,Python工具PyCharm使用技巧

    Python 是一种开源编程语言,用于 Web 编程.数据科学.人工智能和许多科学应用.学习 Python 使程序员能够专注于解决问题,而不是专注于语法,其丰富的库赋予它完成伟大任务所需的力量. 推荐 ...

  2. Python web后端开发框架 Django 、Flask、Tornado

    由于Python的简洁 易读 强大 高效  现在Python应用在文件处理.网络编程.数据库编程.游戏.Web开发.数据分析.机器学习等各个领域. 就Web开发而言,为了提高开发效率,应运而生了很多框 ...

  3. python登录界面源码_基于Python的自媒体小助手---登录页面的实现代码

    核心技术:Python3.7 GUI技术:Tkinter (Python已经内置) 好多文章写Python GUI之tkinter窗口视窗教程大集合(看这篇就够了) 我看了N遍也没够好多东西都没有就基 ...

  4. python软件界面-用Html来写Python桌面软件的UI界面-htmlPy

    在写Python软件的时候,一般用命令行就行了,但是某些特殊情况下(主管要求),需要写一个还能看的界面提供给客户的情况下,那就必须要用到Python的UI包. 试用了很多种: 因为一直用的Python ...

  5. python语言能够整合各类程序代码-python语言概述

    python语言的发展 python语言诞生于1990年,由Guide van Rossum设计并领导开发. python语言是开源项目的优秀代表,其解释器的全部代码都是开源的. 编写Hello程序 ...

  6. 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 ...

  7. python opencv 界面按钮_如何使用Python构建简单的UI?

    借助Streamlit框架,使用用户界面展示Python项目变得前所未有的简单,你可以仅仅使用Python代码来构建基于浏览器的UI.本次演示将为迷宫求解器程序构建UI.StreamlitStream ...

  8. python交互界面数据分析_如何用 Python 和 Streamlit 做交互式数据分析产品?

    「本文参与少数派 2019 年度征文 + 效率有心得」 不用学前端编程,你就能用 Python 简单高效写出漂亮的交互式 Web 应用,将你的数据分析成果立即展示给团队和客户. 痛点 从我开始折腾数据 ...

  9. Python WEB开发:1024程序员节用Tornado框架制作简易【表白墙】网站

    嗨害大家好鸭! 我是小熊猫❤ 眼瞅着1024程序员节就快到了 不知道会不会有人被表白- 我先来自己做一个表白墙 给我的好兄弟提供一个表白的平台哈哈哈哈 有什么python相关报错解答自己不会的.或者源 ...

最新文章

  1. Spring Mock单元测试
  2. 基于数组实现循环队列(基于Java实现)
  3. stm8s编译器查看代码量大小的软件
  4. FastReport4.6程序员手册_翻译 转
  5. Linux关闭selinux
  6. [译]R语言——Shiny框架之构建(一):1.结构——1.独立应用程序——2.双文件式Shiny应用
  7. java中的object... args参数
  8. C#程序之二 -- 数独小游戏(1. UI设计)
  9. Linux自动配置部署,企业级自动化部署方案——ansible实现tomcat自动安装和配置,...
  10. intel h61 linux驱动下载,intel h61主板驱动
  11. Win10清理C盘垃圾
  12. 投资理财入门笔记【不定期更新编辑】
  13. linux根文件系统与内核合二为一
  14. C#调用Outlook发送邮件
  15. HH SaaS电商系统的虚拟资金账户(钱包余额)设计
  16. python tokenize怎么用_tokenize -- 对 Python 代码使用的标记解析器 — Python 3.7.9 文档...
  17. 算法 — 数字三角形
  18. TI芯片(335x、437x、572x)uboot设置logo居中
  19. 讲讲React中的State和Props
  20. 一篇文章看明白 HashMap 工作原理

热门文章

  1. 我一个女孩子居然做了十年硬件。​。。
  2. 今年电子设计竞赛取消了?
  3. 模电这么学,谁还会说不懂晶体管?
  4. python中、变量指向的对象可以发生变化吗_python中的引用传递,可变对象,不可变对象,list注意点...
  5. python异常处理的作用_python之路——异常处理
  6. linux内核启动后门,Linux内核模块入门之简单内核后门
  7. php 请求url没有扩展名,apache – 将.php重定向到无扩展名,并在没有.php的情况下创建url...
  8. php性能需求,PHP语言性能考察
  9. 961计算机基础综合pdf,2017-2018年北航科学与技术教育961计算机基础综合考研大纲重难点.pdf...
  10. vue商城源码_一个标星 5.2k+ 的牛逼开源商城系统