我正在尝试为尚未提供适当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合作而证明我错了。
所以问题是;可以支持多个并发流吗?如果是的话,一个例子会很好。