使用Python请求进行流式上载
我希望使用HTTP Post来流式传输“无限”(即连续)数量的数据。基本上,我希望发送POST请求头,然后流式传输内容(其中内容长度未知)。我仔细看了看,它似乎有设施。我的一个问题是文档中说“要流式传输和上传,只需为您的身体提供一个类似文件的对象”。“类文件”对象是什么意思?我希望传输的数据来自传感器。如何实现一个“类似文件”的对象,该对象将从传感器读取数据并将其传递给调用者 很抱歉我不知道,但我正在摸索python(即边学边练。嗯……看起来像条蛇。感觉滑溜溜的。试图避开这个生物的商业目的…:-) 提前感谢您的帮助使用Python请求进行流式上载,python,python-requests,Python,Python Requests,我希望使用HTTP Post来流式传输“无限”(即连续)数量的数据。基本上,我希望发送POST请求头,然后流式传输内容(其中内容长度未知)。我仔细看了看,它似乎有设施。我的一个问题是文档中说“要流式传输和上传,只需为您的身体提供一个类似文件的对象”。“类文件”对象是什么意思?我希望传输的数据来自传感器。如何实现一个“类似文件”的对象,该对象将从传感器读取数据并将其传递给调用者 很抱歉我不知道,但我正在摸索python(即边学边练。嗯……看起来像条蛇。感觉滑溜溜的。试图避开这个生物的商业目的…:-
Ranga.类文件对象是一个具有“读取”方法的对象,该方法接受大小并为下一个数据块返回二进制数据缓冲区 如果您想从文件系统中读取数据,一个看起来像这样的例子就是file对象 另一种常见情况是类,它读取和写入缓冲区 在您的情况下,您需要自己实现一个“类似文件的对象”,它只需从传感器读取数据
class Sensor(object):
def __init__(self, sensor_thing)
self.sensor_thing = sensor_thing
def read(self, size):
return self.convert_to_binary(self.sensor_thing.read_from_sensor())
def convert_to_binary(self, sensor_data)
....
我只是想给你一个答案,这样你就可以结束你的问题了: 听起来您真正想要的是python websockets。在内部,您发出HTTP请求以将连接升级到websocket,握手后您可以自由地双向流式传输数据。Python使这变得简单:
WebSocket确实支持全双工通信,但您似乎只对服务器到客户端部分感兴趣。在这种情况下,您可以使用
ws.send()
来流式传输数据。我不确定这是否是您想要的,但它应该提供一个解决方案。您可能想尝试websocket?是的,我想我会选择websocket。它似乎达到了我想要的效果。谢谢你的提示。实际上可能有一个问题,如果它读取而不放置大小,它将期望“所有的数据”,因此当你返回时,它会认为它拥有所有内容,它将崩溃。为了确保它不会这样做(很抱歉,无法更改库:),我删除了sizeApparently websockets的默认值。Flask支持websocket,并且python中有一个可用的websocket客户端。感谢您的回答。
from flask import Flask
from flask_sockets import Sockets
app = Flask(__name__)
sockets = Sockets(app)
@sockets.route('/echo')
def echo_socket(ws):
while True:
message = ws.receive()
ws.send(message)
@app.route('/')
def hello():
return 'Hello World!'