Посты с тэгом wsgi


Оптимизация стадии инициализации Django

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


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

Читать дальше →


Оптимизация стадии инициализации Django

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


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

Читать дальше →


Простая оптимизация Django в продакшн

Если вы запускаете Django проект через gunicorn с опцией --max-requests или через другой wsgi сервер с похожей опцией, полезно было бы знать, что, при каждом форке воркер процесса, по-умолчанию много ресурсов сервера уходит в никуда и клиентские запросы в это время подвисают на несколько секунд.

Читать дальше →


[Из песочницы] SOAP и REST сервисы с помощью Python-библиотеки Spyne

Знакомство с библиотекой Spyne


В данной статье я хочу рассказать о замечательной Python-библиотеке Spyne.
Мое знакомство с Spyne началось в тот момент, когда передо мной поставили задачу написать Веб-сервис, который будет принимать и отдавать запросы через SOAP-протокол. Немного погуглив я наткнулся на Spyne, которая является форком библиотеки soaplib. А еще я был удивлен, насколько мало русскоязычной информации встречается о данной библиотеке.

С помощью Spyne можно писать веб-сервисы, которые умеют работать с SOAP, JSON, YAML, а написанный скрипт можно запустить через mod_wsgi Apache. Итак, давайте рассмотрим несколько примеров, напишем работающие скрипты и настроим так, чтобы скрипты работали через apache. Читать дальше →


[recovery mode] Мысли о развёртывании веб-приложений на тестовом сервере


Предисловие


Нижеследующий текст − результат практического опыта и самообразовательных порывов человека, не имеющего систематического образования ни в одной из областей, о которых он (то есть я) берётся рассуждать. Поэтому заумные рассуждения здесь будут перемежаться банальностями. Бейте меня за первые и игнорируйте вторые. Для кого-то и они могут стать откровением.

Я постараюсь описать идеальные варианты настройки тестового веб-севера, хотя понимаю, какой бардак на них обычно творится. Буду ориентироваться на ситуацию, когда деплоить приходится часто, то есть на сервере живёт проект в стадии активной разработки либо несколько проектов на разных стадиях. Проектами занимаются разные разработчики или команды, поэтому проекты нужно изолировать друг от друга. Но сервер внутренний, поэтому такая степень изоляции и автоматизации процессов администрирования, как на серверах под сдачу в аренду, не нужна.

Основной упор я буду делать на применение разных верс


Web-разработка на Python глазами PHP-программиста


Введение


В статье хотелось бы поднять вопросы отличия использования Python для web-зазработки по сравнению с оной на PHP. Надеюсь, статья не приведет к холиварам, так как она вовсе не о том, какой язык лучше или хуже, а исключительно о технических особенностях Python.
Читать дальше →


Примеры использования asyncio: HTTPServer?!


Не так давно зарелизилась новая версия Python 3.4 в changelog которой вошло много «вкусностей». Одна из таких — модуль asyncio, содержащий инфраструктуру пригодную для написания асинхронных сетевых приложений. Благодаря концепции сопрограмм (coroutines), код асинхронного приложения прост для понимания и поддержки.

В статье на примере простого TCP (Echo) сервера я постараюсь показать с чем едят asyncio, и рискну устранить «фатальный недостаток» этого модуля, а именно отсутствие реализации асинхронного HTTP сервера.
Читать дальше →


Архитектура Instagram

Instagram — всего лишь iOS, а теперь и Android, приложение для обмена фотографиями с друзьями. Последнее время находится на слуху благодаря новости о покупке проекта Facebook'ом за кругленькую сумму. Недавно один из основателей проекта, Mike Krieger, выступил на конференции с докладом о техническом аспекте проекта, который я и хотел бы вкратце пересказать.

Статистика

  • Начало:
    • 1 сервер слабее Macbook Pro
    • 25к регистраций в первый день
    • 2 разработчика
  • Сегодня:
    • 40+ миллионов пользователей
    • 100+ виртуальных серверов в EC2, в том числе:
    • Проект куплен Facebook за 1 млрд. долл
    • 1 миллион регистраций за 12 часов после запуска Androi


Архитектура Instagram

Instagram - всего лишь iOS, а теперь и Android, приложение для обмена фотографиями с друзьями. Последнее время находится на слуху благодаря новости о покупке проекта Facebook'ом за кругленькую сумму. Недавно один из основателей проекта, Mike Krieger, выступил на конференции с докладом о техническом аспекте проекта, который я и хотел бы вкратце пересказать.

Статистика

Начало:

  • 1 сервер слабее Macbook Pro
  • 25к регистраций в первый день
  • 2 разработчика

Сегодня:

  • 40+ миллионов пользователей
  • 100+ виртуальных серверов в EC2, в том числе:
  • Проект куплен Facebook за 1 млрд. долл
  • 1 миллион регистраций за 12 часов после запуска Android-верс


Python + wsgi для начинающих

Попробуем написать простейший MVC-сайт на Python с применением wsgi. Для просмотра результатов доступна демонстрация, а ниже приведён и разобран её исходный код.
main.py


# -*- coding: UTF-8 -*-
 
# Опишем шаблон страницы
# Тройные кавычки позволяют продлевать строку на несколько строк
html = '''<html>
<head>
    <title>%(title)s</title>
</head>
<body>
<div id="menu">
    %(menu)s
</div>
<div id="content">
    %(content)s
</div>
</body>
</html>
''';
 
# Меню
menu = {'главная': '/', 'новости': '/news/', 'форум': '/forum/'}