热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

内容推荐流python_Python3.4阅读内容流web请求

实际上,在服务器和客户机上实现textevent-stream相对容易。假设位于example.com的服务器是在端口80(默认端口)上运行的简单服务器:

实际上,在服务器和客户机上实现text/event-stream相对容易。假设位于example.com的服务器是在端口80(默认端口)上运行的简单服务器:import http.server

import json

import socketserver

import time

class RequestHandler(http.server.SimpleHTTPRequestHandler):

def do_GET(self):

self.send_response(200)

self.send_header('Connection', 'Keep-Alive')

self.send_header('Content-Type', 'text/event-stream')

self.end_headers()

name = self.path.strip('/').encode('UTF-8')

old_value = None

new_value = None

while True:

old_value, new_value = new_value, time.time()

data = json.dumps({

'old_value': old_value,

'new_value': new_value,

}).encode('UTF-8')

self.wfile.write(b'name: ')

self.wfile.write(name)

self.wfile.write(b'\r\n')

self.wfile.write(b'data: ')

self.wfile.write(data)

self.wfile.write(b'\r\n')

self.wfile.write(b'\r\n')

self.wfile.flush()

time.sleep(30)

server = socketserver.TCPServer(('', 80), RequestHandler)

server.serve_forever()

每隔30秒,它输出一个事件:

^{pr2}$

然后,客户端可以连接到端口http://example.com/value121,并解析每个事件:import http.client

import json

connection = http.client.HTTPConnection('http://example.com', 80)

connection.request('GET', '/value121', headers={

'Accept': 'text/event-source',

'Connection': 'Keep-Alive',

})

with connection.getresponse() as response:

while not response.closed:

event = {}

for line in response:

line = line.decode('UTF-8')

if line == '\r\n':

# End of event.

break

elif line.startswith(':'):

# Comment, ignore.

pass

else:

# Data line.

key, value = line.split(':', 1)

value = value.strip()

if key == 'data':

value = json.loads(value)

event[key] = value

# Handle event, extract values, etc.

print(event)

每隔30秒客户就会打印出:'data': {'old_value': , 'new_value': }, 'name': 'value121'}



推荐阅读
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • 本文介绍了如何使用Python爬取妙笔阁小说网仙侠系列中所有小说的信息,并将其保存为TXT和CSV格式。主要内容包括如何构造请求头以避免被网站封禁,以及如何利用XPath解析HTML并提取所需信息。 ... [详细]
  • 本文详细探讨了使用Python3编写爬虫时如何应对网站的反爬虫机制,通过实例讲解了如何模拟浏览器访问,帮助读者更好地理解和应用相关技术。 ... [详细]
  • 本文介绍了 Go 语言中的高性能、可扩展、轻量级 Web 框架 Echo。Echo 框架简单易用,仅需几行代码即可启动一个高性能 HTTP 服务。 ... [详细]
  • python模块之正则
    re模块可以读懂你写的正则表达式根据你写的表达式去执行任务用re去操作正则正则表达式使用一些规则来检测一些字符串是否符合个人要求,从一段字符串中找到符合要求的内容。在 ... [详细]
  • Spring Boot 中配置全局文件上传路径并实现文件上传功能
    本文介绍如何在 Spring Boot 项目中配置全局文件上传路径,并通过读取配置项实现文件上传功能。通过这种方式,可以更好地管理和维护文件路径。 ... [详细]
  • Python 3 Scrapy 框架执行流程详解
    本文详细介绍了如何在 Python 3 环境下安装和使用 Scrapy 框架,包括常用命令和执行流程。Scrapy 是一个强大的 Web 抓取框架,适用于数据挖掘、监控和自动化测试等多种场景。 ... [详细]
  • 技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统
    技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统 ... [详细]
  • Spring框架中枚举参数的正确使用方法与技巧
    本文详细阐述了在Spring Boot框架中正确使用枚举参数的方法与技巧,旨在帮助开发者更高效地掌握和应用枚举类型的数据传递,适合对Spring Boot感兴趣的读者深入学习。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 本文将带你快速了解 SpringMVC 框架的基本使用方法,通过实现一个简单的 Controller 并在浏览器中访问,展示 SpringMVC 的强大与简便。 ... [详细]
  • 用阿里云的免费 SSL 证书让网站从 HTTP 换成 HTTPS
    HTTP协议是不加密传输数据的,也就是用户跟你的网站之间传递数据有可能在途中被截获,破解传递的真实内容,所以使用不加密的HTTP的网站是不 ... [详细]
  • Spring – Bean Life Cycle
    Spring – Bean Life Cycle ... [详细]
  • oracle c3p0 dword 60,web_day10 dbcp c3p0 dbutils
    createdatabasemydbcharactersetutf8;alertdatabasemydbcharactersetutf8;1.自定义连接池为了不去经常创建连接和释放 ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
author-avatar
love28119_529_700
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有