Я пытаюсь создать HTTP API, который может создавать и уничтожать параллельные задачи, которые открывают TCP-соединения с удаленными серверами, передающими потоковые данные ~ 15 секунд.Я должен выяснить, как обрабатывать данные позже.Сейчас я просто распечатываю его.
В приведенном ниже примере я могу создать несколько соединений TCP, перейдя к http://192.168.1.1:5000/addconnection.
Вопросы:
1) Разумен ли этот подход?Я думаю, что Flask может создавать новый поток для каждого запроса / addconnection.Я не уверен, какие ограничения производительности я достигну, делая это.
2) Можно ли отслеживать каждое соединение?Я хотел бы реализовать / listconnections и / removeconnections.
3) Есть ли более Pythonic способ сделать это?Я немного читал о сельдерее, но пока не очень хорошо понимаю.Возможно, есть другие уже существующие инструменты для решения подобных проблем.
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)