我正在尝试制作一个 HTTP API,它可以创建和销毁打开 TCP 连接到远程服务器流式传输约 15 秒数据的并发任务。稍后我将不得不弄清楚如何处理数据。现在我只是打印它。
在下面的示例中,我可以通过导航到http://192.168.1.1:5000/addconnection来创建多个 TCP 连接。
问题:
1)这种方法合理吗?我认为 Flask 可能会为每个 /addconnection 请求创建一个新线程。我不确定这样做会遇到什么性能限制。
2)是否可以跟踪每个连接?我想实现/listconnections 和/removeconnections。
3)有没有更Pythonic的方式来做到这一点?我读过一些关于 Celery 的文章,但我还不是很了解它。也许还有其他已经存在的工具可以处理类似的问题。
import trio
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
@app.route("/addconnection")
def addconnection():
async def receiver(client_stream):
print("Receiver: started!")
while True:
data = await client_stream.receive_some(16800)
print("Received Data: {}".format(data))
async def parent():
async with trio.open_nursery() as nursery:
client_stream = await trio.open_tcp_stream('192.168.1.1', 1234)
nursery.start_soon(receiver, client_stream)
trio.run(parent)