我试图使用Python从服务器使用SSE(服务器发送事件)流。为此,我尝试使用sseclient
包。
pip安装sseclient
0.0.27版已安装。
现在的程序:
from sseclient import SSEClient
import json
url - # URL
token = # token
headers = {}
headers['Accept'] = 'text/event-stream'
headers['Authorization'] = 'Bearer ' + token
messages = SSEClient(url, headers=headers)
for message in messages:
node = json.loads(message.data)
# process the node
当我使用一个短流(只有几条消息)时,它工作得很好。
但当我使用一个由几千条消息组成的流时,它会中断:
Traceback (most recent call last):
File "/Users/romanpuchkovskiy/scripts/./search.py", line 67, in <module>
node = json.loads(message.data)
File "/usr/local/Cellar/python@3.9/3.9.0_1/Frameworks/Python.framework/Versions/3.9/lib/python3.9/json/__init__.py", line 346, in loads
return _default_decoder.decode(s)
File "/usr/local/Cellar/python@3.9/3.9.0_1/Frameworks/Python.framework/Versions/3.9/lib/python3.9/json/decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/local/Cellar/python@3.9/3.9.0_1/Frameworks/Python.framework/Versions/3.9/lib/python3.9/json/decoder.py", line 353, in raw_decode
obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Expecting ',' delimiter: line 1 column 411 (char 410)
实际上是进一步的处理中断了,但这意味着sseclient
会破坏数据(因此以后无法将其解析为JSON
)。我使用相同的请求使用CURL检查了流,并且响应正常。用Java编写的客户端也可以成功地使用它(使用spring webflux
中的WebClient
)。
原因可能是什么?
原来,sseclient
中有一个bug:https://github.com/btubbs/sseclient/issues/28
它仍然是开放的,但有一个公关解决这个问题https://github.com/btubbs/sseclient/pull/35
它还没有合并。我把打了补丁的SSE客户端拿走了。py
这里https://raw.githubusercontent.com/mutantmonkey/sseclient/disable_short_reads_when_chunked/sseclient.py,将它放在脚本所在的目录中,现在一切正常。
我试图使用SnmpWalk访问Windows Server 2012上的MSSQLSERVER-MIB。exe。我特别感兴趣的对象是mssqlSrvState,它的oid是:1.3.6.1.4.1.311.1.4.1.1.1.1.5。虽然MS SQL服务正在服务器上运行,但我无法获取有关MSSQLSERVER-MIB中任何对象的信息。这是否意味着SnmpWalk不知道MSSQLSERVER的MIB
成熟稳定的商业软件,开源但不完全免费。个人及非盈利组织可以随意使用; 商业用途只需要支付少量的费用并可以获得我们的技术支持服务。 感谢您选择 Highcharts 系列图表软件,Highcharts 系列软件包含 Highcharts JS,Highstock JS,Highmaps JS 共三款软件,均为纯 JavaScript 编写的 HTML5 图表库,全部源码开放。 1、非商用免费授权 以
SSH协议用于为Git提供远程读写操作,是远程写操作的标准服务,在智能HTTP协议出现之前,甚至是写操作的唯一标准服务。 5.3.1. SSH协议语法格式 对于拥有shell登录权限的用户帐号,可以用下面的语法访问Git版本库: 语法1: ssh://[<username>@]<server>[:<port>]/path/to/repos/myrepo.git 语法2: [<username>@]
Git协议是提供Git版本库只读服务的最为常用的协议,也是非常易用和易于配置的协议。该协议的缺点就是不能提供身份认证,而且一般也不提供写入服务。 5.2.1. Git协议语法格式 Git协议的语法格式如下。 语法: git://<server>[:<port>]/path/to/repos.git/ 说明: 端口为可选项,默认端口为9418。 版本库路径/path/to/repos.git的根目
HTTP协议是版本控制工具普遍采用的协议,具有安全(HTTPS),方便(跨越防火墙)等优点。Git在 1.6.6版本之前对HTTP协议支持有限,是哑协议,访问效率低,但是在1.6.6之后,通过一个CGI实现了智能的HTTP协议支持。 5.1.1. 哑传输协议 所谓的哑传输协议(dumb protocol)就是在Git服务器和Git客户端的会话过程中只使用了相关协议提供的基本传输功能,而未针对Git
作为一个应用程序的一部分,我正在工作,我想提供一个假期列表。我试图使用谷歌API来做到这一点。在编写代码之前,我只想看看返回的JSON是什么样子的。 我在谷歌建立了一个帐户,得到了一个API密钥,并被设置为使用谷歌日历API。我对获取假期列表所需的HTML进行了研究,但似乎无法使其工作。我浏览了所有的日历API文档,但没有找到任何关于检索假日列表的内容。以下是我尝试的一些URL和收到的回复。我在网