Flask的并发(视频)流

时间:2016-09-29 10:28:22

标签: python flask concurrency proxy stream

我正在尝试为尚未提供适当API层的应用程序进行MITM代理,这是我到目前为止所提出的:

@app.route('/auto/<channel>')
def stream(channel):
    url = ''
    channel = channel.replace('v', '')

    if not request.args.get('duration'):
        duration = 60 * 60  # set default timeout to 1h if not set
    else:
        duration = int(request.args.get('duration'))
    duration += time.time()

    for c in _get_channels():
        if str(c['number']) == channel:
            url = '%s%s%s' % (config['tvhURL'], '/stream/channel/', c['uuid'])

    if not url:
        abort(404)
    else:
        req = requests.get(url, stream=True)

        def generate():
            for chunk in req.iter_content(chunk_size=10*1024):
                if not time.time() < duration:
                    req.close()
                yield chunk

        return Response(generate(), content_type=req.headers['content-type'], direct_passthrough=True)

现在它对于一个(实时视频)流完全正常,但只要流处于活动状态,它就会阻止任何其他请求/流。

我现在已经找了一段时间了,似乎我已经得出结论,这是Flask内部的一个限制,它具有同步性。 / p>

但我仍然希望有人会因为我喜欢与Flask合作而证明我错了。

所以问题是;可以支持多个并发流吗?如果是的话,一个例子会很好。

0 个答案:

没有答案