LINUX.ORG.RU

Какой фреймворк выбрать, для web-приложения без БД?

 


0

1

Обычно использую flask и в большинстве случаеум у меня один http запрос влечет за собой запрос к БД.

А сейчас мне хочется сделать небольшое приложение, в котором в принципе не будет БД и все данные будут храниться в памяти. Т.е. на каждого web-клиента создается свой экземляр класса, который будет висеть в памяти до победного, или пока он не удалится в связи с какими-то действиями web-клиента.

Знаю что у flask есть всякие flask.g и прочее, но мне кажется это как-то неудобно.

Что есть из решений более удобное для таких целей?

★★★★★

На самом деле есть очень простое решение, при котором ты можешь использовать абсолютно любой фрейворк - это sqlite3 в режиме in memory

Выдержка из документации:

«If the filename is »:memory:", then a private, temporary in-memory database is created for the connection. This in-memory database will vanish when the database connection is closed. Future versions of SQLite might make use of additional special filenames that begin with the ":" character. It is recommended that when a database filename actually does begin with a ":" character you should prefix the filename with a pathname such as "./" to avoid ambiguity."

k0valenk0_igor ★★★
()
Ответ на: комментарий от k0valenk0_igor

На самом деле есть очень простое решение, при котором ты можешь использовать абсолютно любой фрейворк - это sqlite3 в режиме in memory

Ерунда это, а не решение. С тем же успехом ничего не мешает использовать что-то более производительнее sqlite - тот же редис или даже мемкешд. Только вот изначально вопрос не в этом был, но все равно найдется кто-то кто попытается свою левую тему вставить

Siado ★★★★★
() автор топика
Ответ на: комментарий от Siado

На самом деле это - решение. Редис не позволит хранить модели, а это решение позволит. Причем сделает это прозрачно для фрейворка.

но все равно найдется кто-то кто попытается свою левую тему вставить
левую тему вставить

Слушай сюда: во-первых, если кто и вставил левую тему так это как раз ты. А во-вторых, если ты не ценишь что другие пришли тебе на помощь и теряют свою время помогая тебе, то ты просто гавнюк, и больше ничего. Как слышно? Перехожу на прием!

k0valenk0_igor ★★★
()
Последнее исправление: k0valenk0_igor (всего исправлений: 1)
Ответ на: комментарий от k0valenk0_igor

вот! чаю вам за sqlite! я только не понимаю, вот что: 1. он будет плодить их в итоге, а невычитанные курсоры будут копиться (ну или он дисциплинированный и понимает, что делает....) и всё это будет течь гарантированно.

2. безопасна ли передача соединения в другой тред для memory базы? для дисковой в wal-режиме вроде да, и вроде даже об этом четко написано было официально (лень искать).

а этой передачи соедидениея ему не избежать. т.е. чтобы это избежать дано три условия (чтобы не передавать соединение):

- удерживать тред на любого клиента, запретить ресайклинт. т.е. фактичеки запретить пул как таковой (!). потом (т.к. у него на каждого что квалифайд на то чтобы считать клиентом - по треду получится) еще фоново считать время и вести учет, и глушить (т.е. разлочивать их и переводить на выход)

- гарантировать, что один «логический» клиент не затребует себе более одного «одновременного» запроса, а если затребует - детектировать и запредить. требование невыполнимое почти.

- как-то связывать тред с поступившим запросом. т.е. сделать разбор, на основании заголовков, заставить http-сервер-либу диспатчнуть ее в конкретный тред на обработку. черрипай (только с ним один раз работал) такого вроде не умеет, другие я думаю то же. ну и вообще безумная кострукция.

т.е. технически это всё можно сделать, ну лучше б оказалось, что есть официальные гарантии того, что она и в мемори-мод допускает передачу коннекшена в другой тред. тогда всё окажется проще!

thomasbug
()
Ответ на: комментарий от k0valenk0_igor

как это связано с затронутой мной темой про допустимость передачи между тредами sqlite соединения в memory режиме? правильно, никак. вы что тоже из тех, кто не понимает как что работает, и тупо нечто использует?

К вашему сведению, такие темы, есть вам самому интересно, выясняются чтением документации на sqlite.org (что я всегда делаю и вам советую - много инетерсного найдете)

Ваших вопросов

и кстати у меня-то вопросов нет. есть и понимание и опыт, всё стабильно работает, в отличии от ОПа.

и да, зачем вы мне советуете какой-то «Sanic, Flask-like»? я так и не понял.

thomasbug
()
Ответ на: комментарий от thomasbug

2. безопасна ли передача соединения в другой тред для memory базы?

и кстати у меня-то вопросов нет

Когда человек пишет предложение и ставит в конце его знак "?", то это обычно называется «задавать вопрос».

А если этот человек еще и достаточно умен, то он, прежде чем кидаться умными терминами, задумается над тем, насколько конкретная реализация веб-сервера влияет на проблему безопасности обращений этого сервера к БД. И насколько эту проблему лечит уход от нитей в пользу сопрограмм, этот человек задумается так же.

Задумались? Тогда я возвращаю вам презентованный мне в предыдущем вашем посте «чай»))

k0valenk0_igor ★★★
()
Последнее исправление: k0valenk0_igor (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.