Pull to refresh
20
0
Send message
Самый простой и кросбраузерный пожалуй DNS:8.8.8.8
У Flask с Jinja2 есть один хороший плюс на мой взгляд. Фронтенд программист (Продвинутый верстальщик) имеющий опыт работы с Symfony2+Twig легко сможет переключится на проекты Flask. Потому что Jinja2 почти тоже самое, что Twig, хотя правильнее сказать наоборот, так как Twig был сделан под впечатлением от Jinja2.
Да, с расширениями беда под Python3. Надо чаще дергать разработчиков расширений на гитхабе.
Хотя наиболее популярные уже портированы и активно багфиксятся например flask_script, flask_sqlalchemy, flask_login, flask_wtf. В тоже время по многим полезным расширениям даже планов нет например flask_debugtoolbar.
А мне показалось, что это тот крупный банк у которого деньги с одного отделения идут до другого находящегося на расстоянии 1-2км правда по разные стороны от МКАД 3 дня.
В общем понятно в общих чертах, если «хватит здоровья» попробую и такой режим прикрутить.
Не, в том что мы с VBart обсуждали.
Когда один процесс/поток обнаружил, что кэш устарел и начал формировать контент, чтобы обновить его. Другие процессы/потоки обнаружившее этот факт не должны начать делать тоже самое, а просто отдавать пока старое содержимое.

В случае с использованием только Nginx, это придется наверно делать как-то с использованием файловой системы, не будем же мы для этого задействовать тот же мемкэш от которого хотим отказаться или подобные сервисы?
В принципе получиться должно, но 15 строчками кода вряд ли обойдется. :)

Надо будет как-то решать проблему права доступа к файлу, сделать свой велосипед для установки блокировки, пока генерируется контент и т.п. В случае с мемкашэм, это всё можно «переложить на его плечи».
Очень неудачный пример. У каждого пользователя свое количество сообщений, поэтому этот фрагмент для каждого пользователя индивидуален.


Да индивидуален, но например в демо к моему решению он занимает ~400байт. Хорошо, пусть в навороченных соцсетях он 40Кбайта. При количестве онлайн пользователей 10000, для первого случая объем требуемого ОЗУ под это дело в первом случае ~4Мбайта, во втором ~400Мбайт. Это же легко потянет кэш на одной машине, даже на порядок больше, не?
А если у нас десяток таких машин с расшарденым мемкэшем?
Я не совсем понимаю следующие моменты, как их реализовать только с помощью Nginx:

Например есть SSI фрагмент с урлом /_inc/posts_list/4 содержащий четвертую страницу списка постов. У меня пользователь добавил пост, как мне изменить кэш конкретно для этого URL в кэшсторе Nginx?

Удалить мне его нельзя, содержимое может генерироваться пару секунд. В это время соответственно Nginx пока должен отдавать старый кэш.

И еще вопрос, можно ли организовать защиту от raсe condition на време генерации обновленного контента? В моем примере для этих целей используется тот же memcached.

Flask-Cache не поможет реализовать фрагментарное кэширование, я его серьезно поковырял на этот предмет, более того я его пользовал для обычного кэширования и знаком с его функциональностью.

Beaker Cache, не знаю, но его упоминание мне не попадалось к контексте SSI/ESI.
Впрочем конечно это можно сделать и из кода, спасибо за наводку. Поэксперементирую с этим. Тут на мой взгляд остается только вопрос как сделать блокировку для thread safe.
То да curl рулит, но у меня сброс кэша делается из кода приложения самим расширением путем вызова метода. Причем не надо знать URL, достаточно указать имя вьюшки, которая генерировала этот контент
Есть что почитать по этой теме? Для конфигурации одно приложение, один хост — это было бы наверно оптимальным вариантом.
Во первых твое решение имеет тот же «фатальный недостаток», что и те которые я привел ссылками в начале статьи:)
Во вторых решений для PHP по теме много, тот же симфони практически поддерживает ESI+Varnish «из коробки».

Ну а потом самое главное, мое решение реализует динамический кэш, тоеть приложение имеет возможность сбросить/поменять содержимое кэша в зависимости от логики своей работы. Если этого нет, то memcashed лишнее звено в этой цепочки, Nginx и так прекрастно может кэшировать SSI фрагменты.
Вообще да, наиболее хорошо это будет смотреться в системе с несколькими фротендами разделяющими нагрузку. Но из-за того что кэш получился управляемый — это хорошо «развеселит» приложение работающее и на одной машине.

Nginx конечно же крут в кэшировании, но насколько я знаю сбросить кэш программно для определенного урла нельзя. Можно конечно удалять файлы из кэшсторе, но как определить, какой файл надо удалить, что бы обновился кэш для определенного урла? Хотя могу заблуждаться, и вы что-то уже сделали в этом направлении. Но инфы такой не встречал.
В дополнение, небольшая инструкция как запустить демо.
Возможно кто-то захочет посмотреть, что из себя представляет Flask
приложение. Пример для Linux, работу в Windows не проверял. По идее
должно и там заработать.
mkdir demo
cd demo
virtualenv env
source env/bin/activate
git clone https://github.com/AleshGood/Flask-Fragment.git
cd Flask-Fragment
python setup.py develop
pip install git+https://github.com/jaysonsantos/python-binary-memcached.git
cd demo
pip install -r requirements.txt
python ssiblog.py create_db

Теперь если в коде ssiblog.py найти и закомментировать строку
FRAGMENT_CACHING = True или выставить значение False, приложение можно
запустить командой:
python ssiblog.py debug

В этом случае кэширование будет отключено, но приложение будет
нормально работать по урлу 127.0.0.1:5000/

Что бы посмотреть кэширование, надо в Nginx добавить конфиг nginx.conf,
возможно поменять в нем имя хоста и порт. По умалчиванию приложение
«нагло садится» на localhost:80. В системе так же должен быть доступен
memcached на порту 11211 без авторизации (либо править конфиг приложения).
FRAGMENT_CACHING нужно выставить в True.
Да эти модули есть во всех популярных дистрибутивах Linux.
Да, Nginx должен быть собран с модулями ngx_http_ssi_module, ngx_http_memcached_module и соответствующий конфиг конечно, его пример есть в демо приложении.
Я думаю основная проблема в выборе инвестора состоит в том, предъявители он вам счет за скушанное в ресторане на этапе обсуждения этого самого проекта, если он не взлетит.
В будущем же сделают голосование по РОИ доступным только для членов ОНФ, причём не анонимно.

А это голосование на сайте РОИ разве анонимное? Вы сами голосовали? Может я что-то не понял, но для участие в этом голосовании надо подтвердить свою личность и гражданство залогинившись с сайта госуслуг.

Information

Rating
Does not participate
Location
Москва и Московская обл., Россия
Registered
Activity