@FaTTeST

Каким образом организовать работу клиент-сервер на python для обработки данных с устройств?

Подскажите, пожалуйста, в каком направлении двигаться.
Суть вопроса
Требуется принимать данные с более 1000 устройств, обрабатывать и записывать данные в БД MySQL. Все это пишется на python

1. Каким образом организовать прием данных, создавать поток на каждое соединение мне кажется это не совсем правильно. Я сужу по аналогичным программам где на все используется всего 10-20 потоков. Проблема в том что оборудование-клиент ждет ответа от сервера после подключения всего несколько секунд, и отключается.

2. Если использовать потоки, то каким образом записывать в базу данные если нет поддержки многопоточности на одно соединение
  • Вопрос задан
  • 261 просмотр
Пригласить эксперта
Ответы на вопрос 2
solotony
@solotony
покоряю пик Балмера
>> Требуется принимать данные с более 1000 устройств, обрабатывать и записывать данные в БД MySQL. Все это пишется на python

>> оборудование-клиент ждет ответа от сервера после подключения всего несколько секунд,
используйте потоки конечно же. создавайте потоки "по требованию" . пришел запрос - открыли поток.

>> Если использовать потоки, то каким образом записывать в базу данные если нет поддержки многопоточности на одно соединение

используйте мьютексы (локи), семафоры
Ответ написан
@iddqda
network engineer, netdevops
а клиент может в http(s)?
в этом случае берешь готовый веб фреймворк и не изобретаешь велосипеды
fastAPI, например, отличный вариант, очень легкий быстрый и с обалденной докой
и в async умеет

например вот так просто выглядит прием POST от клиента и запись в БД

@app.post("/notes/", response_model=Note)
async def create_note(note: NoteIn):
    query = notes.insert().values(text=note.text, completed=note.completed)
    last_record_id = await database.execute(query)
    return {**note.dict(), "id": last_record_id}


дальше сам https://fastapi.tiangolo.com/advanced/async-sql-da...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы