Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python请求进行流式上载_Python_Python Requests - Fatal编程技术网

使用Python请求进行流式上载

使用Python请求进行流式上载,python,python-requests,Python,Python Requests,我希望使用HTTP Post来流式传输“无限”(即连续)数量的数据。基本上,我希望发送POST请求头,然后流式传输内容(其中内容长度未知)。我仔细看了看,它似乎有设施。我的一个问题是文档中说“要流式传输和上传,只需为您的身体提供一个类似文件的对象”。“类文件”对象是什么意思?我希望传输的数据来自传感器。如何实现一个“类似文件”的对象,该对象将从传感器读取数据并将其传递给调用者 很抱歉我不知道,但我正在摸索python(即边学边练。嗯……看起来像条蛇。感觉滑溜溜的。试图避开这个生物的商业目的…:-

我希望使用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!'