Tishka17
Ну вот "http request" - это же не фласковый реквест, не саник
Tishka17
А неведомая фигня
Tishka17
И коннекторы к бд небось свои, да?
Tishka17
В общем, я понял
Maxim
Твоя функция stateless
Tishka17
Твоя функция stateless
Ну да. Но мне же надо куда-то данные сохранять
Tishka17
Если не сохранять данные и сервер не нужен, можно все на клиенте делать
Maxim
Ну вот "http request" - это же не фласковый реквест, не саник
Да. Свое. Но тебе там вряд ли понадобится что-то большее, чем request.get_json()
Maxim
Ну да. Но мне же надо куда-то данные сохранять
Общаться с базами по сети. Я это уже не пробовал. У меня боты stateless.
Tishka17
Да. Свое. Но тебе там вряд ли понадобится что-то большее, чем request.get_json()
Ну как, повесить один middleware на все десять функций апи. Или ещё что
Maxim
В мою задачу идеально подошло такое решение. Я не говорю, что надо любое приложение теперь делать так.
Tishka17
По http*
А транзакции?
Oleg
Общаться с базами по сети. Я это уже не пробовал. У меня боты stateless.
Понятно что по сети. А где взять нужные зависимости? Там же наверняка только встроенные коннекторы для своих же сервисов
Maxim
А там вендор-лок на платформу, да.
Maxim
Ну хотя нет
Maxim
Зависимости устанавливать можно
Maxim
Телеграм-библиотека у меня подключна.
Maxim
А транзакции?
Я не знаю.
Tishka17
Ок
Maxim
Ну как, повесить один middleware на все десять функций апи. Или ещё что
Ну вешай. У тебя одна входная функция. Из нее сам подключай мидлвари и раскидывай реквесты по подфункциям.
Bogdan (SirEdvin)
А транзакции?
А что мешает транзакции в http делать в рамках сессии?)
Bogdan (SirEdvin)
Ну, в реальности транзакции же находятся в самой бд. Достаточно просто сначала делать условный login и получать идентификатор сессии, с которым дальше ходить в бд. И транзакции не будут проблемой, как мне кажется. В копилку к этому есть websocket или keep-alive штуки
Tishka17
А что мешает транзакции в http делать в рамках сессии?)
Вот мне надо сделать два апдейта в БД в рамках одной транзакции и между ними ещё что-то. В постгресе я пишу update в базе; что-то на сервере; update в базе; commit.
Bogdan (SirEdvin)
То есть?
Tishka17
А хз
Tishka17
Чёт все что не гуглю про js
Bogdan (SirEdvin)
Ну, в рамках http можно сделать так: 1. login -> получен токен 2. выполняешь запрос c условным {'session': 'token', 'query': 'BEGIN TRANSACTION'} 3. выполняешь запрос c условным {'session': 'token', 'query': 'UPDATE required'} 4. выполняешь запрос c условным {'session': 'token', 'query': 'UPDATE another'} 5. выполняешь запрос c условным {'session': 'token', 'query': 'COMMIT'}
Bogdan (SirEdvin)
То есть это не очень эффективно, но технически не проблема
Bogdan (SirEdvin)
Для лучшей эффективности можно применять всякий keep-alived, что бы коннект устанавливался быстрее, но тут опять остается вопрос про "бинарный формат быстрее, чем текстовый"
Maxim
В редис. =)
Tishka17
В редис. =)
Тогда у меня в БД не будет транзакции
Bogdan (SirEdvin)
И куда же я буду данные класть между запросами?
В плане? Запросы же выполняются в бд
Bogdan (SirEdvin)
Результаты запросов тебе приходят в ответе на запрос
Maxim
На самом деле я не знаю, как разруливают продвинутые кейсы в такой архитектуре. Но как-то разруливают.
Tishka17
В плане? Запросы же выполняются в бд
Ну я буду в БД открывать транзакцию и ждать повторных запросов? Никаких гарантий что следующий запрос по http прилетит в тот же инстанс сервеоа
Tishka17
Меняют логику так чтобы они не нужны были
Tishka17
Но транзакции БД остаются
Tishka17
Обычно в такой схеме запросы просто роутятся внутри кластера
Нет, ты не понял. Сделать два апдейта в одной транзакции и два в двух - разные вещи.
Tishka17
Юзать одну транзакцию БД из двух коннектов невозможно
Tishka17
Юзать один Коннект с двух серверов - невозможно
Tishka17
Гарантировать что два хттп запроса придут на один сервер - невозможно
Bogdan (SirEdvin)
Невозможно - у вас есть какие-то физические ограничения, которые это запрещают?
Bogdan (SirEdvin)
У вас есть роутинг внутри кластера
Bogdan (SirEdvin)
Вы же понимаете, что можно не привязать транзакцию к коннекту?
Tishka17
Давай в постгресе или мускуле
Bogdan (SirEdvin)
Мы говорим про конкретную бд или все-таки про абстрактную? Понятное дело, что в них такой возможности нет
Tishka17
Про любую тебе известную реляционную
Tishka17
К которой умник решил дать доступ по хттп
Bogdan (SirEdvin)
Любая известная мне реляционная вроде не умеет в http
Bogdan (SirEdvin)
Если мы говорим про прокси между пользователем и postgres - это вполне возможно
Bogdan (SirEdvin)
Достаточно просто что бы у этих прокси была полная связность и они могли роутить друг на друга запросы
Bogdan (SirEdvin)
То есть, если запрос приходит на сессию, которая была заведена в другом прокси, запрос перенаправлялся туда
Tishka17
Я понимаю ещё вебсокет
Tishka17
Короче, мы поняли. Надо ещё балансировщик хитрый очень
Tishka17
Ок
Bogdan (SirEdvin)
Ну, то есть так будут делать только наркоманы, но технически это возможно)
🇺🇦|√|_0_I7_3_12🇺🇦
Почему-то pip install pygame выдаёт ошибку
🇺🇦|√|_0_I7_3_12🇺🇦
Ошыбку
Tishka17
бывает
Tishka17
иногда я вместо pip install пишу pip isntall и тоже ошибка
Alex
Почему-то pip install pygame выдаёт ошибку
попробуйте сменить прокладку между стулом и монитором.
Tishka17
sticky session
ну это ж все равно не гарантирует