|
1 / 1 / 0
Регистрация: 02.10.2015
Сообщений: 16
|
|
Когда нужно закрывать соединение между сокетами25.10.2019, 15:09. Показов 4163. Ответов 9
Имеется приложение на Flask. Также имеется другое приложение, которое в режиме реального времени обрабатывает некоторые данные. Необходимо эти данные вернуть пользователю.
Пользователь делает GET запрос, параметрами которого являются данные, которые нужно взять из приложения. Для того, чтобы можно было получать данные и не вмешиваться в работу приложения, которое обрабатывает данные, при его запуске создается поток, в котором создается серверный сокет. Приложение Flask при получении первого GET запроса проверяет доступно ли соединение, если да, то формирует пакет, отправляет его в сокет. Серверный сокет ловит пакет, обрабатывает, возвращает ответ в сокет. Клиентский сокет принимает ответ, обрабатывает, возвращает данные пользователю. Вопрос: после того, как был обработан GET запрос (т.е. данные от приложения получены и готовы к отправке пользователю) нужно ли закрывать сокет? Или держать соединение до тех пор, пока или web сервер не отключится, либо пока приложение, которое обрабатывает данные не будет приостановлено. Интервал между запросами на получение данных: от 10 в секунду (0.1 сек) и выше.
0
|
|
| 25.10.2019, 15:09 | |
|
Ответы с готовыми решениями:
9
Закрывать или не закрывать соединение, когда скрипт выполняется долго Нужно ли закрывать соединение? Нужно ли закрывать соединение с БД |
|
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
|
|
| 25.10.2019, 15:37 | |
|
Не могу сказать наверняка, но я слышал, что:
"Открытый порт для "мамкиного Хацкера" - как котику сметанка.
0
|
|
|
1 / 1 / 0
Регистрация: 02.10.2015
Сообщений: 16
|
|
| 25.10.2019, 15:40 [ТС] | |
|
Damenikx, сеть локальная.
0
|
|
|
Просто Лис
|
|
| 25.10.2019, 17:59 | |
Сообщение было отмечено Nick0904 как решение
Решение
Странно всё. Ну и ладно.
Объявите переменную сокета и код открытия сокета на удалённый сервис (приложуху) в глобальной области видимости. Для того, чтобы сокет открывался при запуске воркера flask и соединение всегда было установлено. * Ещё нужно настроить keep-alive, чтобы соединение не разорвалось при простаивании. * Если соединение всё же разорвалось - восстанавливаем. * Работу с сокетом лучше обернуть в какой-нибудь класс и давать остальному flask'у пару методов. В итоге получается, что веб-сервер стартует, каждый воркер поднимает соединение до приложения и держит его. Всё будет работать при условии, что приложение умеет обрабатывать несколько запросов по одному соединению. То есть послали запрос, а потом (сразу или через несколько секунд) опять послали по этому же сокету. Добавлено через 5 минут Я бы использовал для общения между сервисами JSON-RPC или самодельную реализацию. Отлаживать проще (открыл ссылку в браузере или съэмулировал post-запрос). Добавлено через 49 секунд Да, тогда второе приложение превращается в мини http-сервер.
1
|
|
|
1 / 1 / 0
Регистрация: 02.10.2015
Сообщений: 16
|
|
| 28.10.2019, 07:05 [ТС] | |
|
0
|
|
|
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
|
|
| 28.10.2019, 08:14 | |
|
Рыжий Лис, JSON-RPC можно заменить Pyro? Прочитал документацию, очень похож результат, которого можно добиться, используя эти модули.
0
|
|
|
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
|
|
| 28.10.2019, 08:49 | |
|
Рыжий Лис, последний вопрос, если можно (я ТС).
Т.е. сейчас все выглядит как-то так: 1. JS делает GET запрос web серверу на получение данных 2. Сервер делает запрос приложению. Для этого формирует пакет по (свой протокол) и отправляет в сокет 3. Приложение формирует пакет ответа и отправляет web серверу 4. web сервер отправляет ответ клиенту Сильно ли отразится использование JSON-RPC на времени ответа, если заменить им обмен данными по сокету?
0
|
|
|
Просто Лис
|
|||||||
| 28.10.2019, 09:01 | |||||||
|
Думаю не сильно. Замерил скорость открытия сокета:
Вопрос целесообразности поддержания открытого соединения остаётся открытым. Можно поэкспериментировать, тот же requests из коробки поддерживает такую фичу.
1
|
|||||||
| 28.10.2019, 09:01 | |
|
Помогаю со студенческими работами здесь
10
Нужно ли закрывать соединение у myqsli? StreamReader: когда закрывать поток и нужно ли это делать Нужно на одной странице открыть соединение, и чтобы оно не закрывалось , когда я перехожу на следуюущие страницы. Стоит ли закрывать соединение с БД и тормозит ли это сайт? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
|
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo
Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло.
Но на выплатах по больничным это. . .
|
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
|
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y
Z4Tv2zpXVVo
https:/ / github. com/ shumilovas/ med2. git
|
|
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа.
В качестве фильтра для отбора справочника служит группа номенклатуры.
Отбор по наименованию группы. . .
|
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
|
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс.
Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
|
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа.
В качестве фильтра для отбора служит значение перечислений.
/ / Событие "НачалоВыбора" реквизита на форме. . .
|