Пока проверял как Celery работает с MySQL в качестве брокера, материала набежало на большую статью. Сергей Лебедев, спасибо за этот замечательный вопрос!
Проблемная область
В каждом более-менее крупном веб-проекте появляются задачи, которые не укладываются в короткий цикл запроса-ответа HTTP. Отправка уведомлений по почте - сервер может не отвечать 20 секунд, зачем ...
Определяем в питоновском коде задачи, которые должны выполняться асинхронно:
from celery.decorators import task
@task
def add(x, y):
return x + y
Запускаем несколько обработчиков на разных серверах (все они связываются брокером, в качестве которого может выступать RabbitMQ, Stomp, Redis и большинство современных СУБД)
Запускаем задачу на асинхронное выполнение:
result ...
И снова цитата из Code Like a Pythonista:
Python 2.4 introduced an optional argument to the sort list method, "key", which specifies a function of one argument that is used to compute a comparison key from each list element. For example:
def my_key(item):
return (item[1], item[3 ...
В мейл-конференции Python-Dev всерьез обсуждают включение фукнциональности virtualenv в Python. Это очень удобный инструмент питониста, позволяющий легко работать на одной машине с разными версиями библиотек (например, с django 1.0.4 и django из транка), быстро передавать список зависимостей проекта другим разработчикам (а они смогут поставить все библиотеки одной командой ...
Есть такой замечательный ресурс Python Quotes - 10 страниц отборных цитат из переписки в python-dev, вот некоторые из них:
This is Python! If we didn't care what code looked like, most of us would probably be hacking in some version of Lisp -- which already covered most of Python's abstract ...
В питоне есть 2 очень мощных инструмента мета-программирования: декораторы и метаклассы. Декораторы применяются к функциям, метаклассы - к классам. Хочу подробно остановиться на декораторах.
Что это такое
Классический пример декоратора - render_to:
def render_to(template):
def renderer(func):
def wrapper(request, *args, **kw):
output = func(request, *args, **kw)
if isinstance(output, (list ...
Ребята, я тут подумал - а что если раз в месяц собираться на чашечку кофе и делиться опытом разработки, рассказывать про новые технологии и языки, про решение актуальных задач? Особенно интересны аспекты разработки с использованием динамических языков - Python, Ruby, Javascript. Мне это интересно тем, что можно познакомиться друг с другом, перенять ...
- Не нужно ставить точки с запятыми и фигурные скобки повсюду (радует еще больше, чем при переходе с begin-end Паскаля к фигурным скобкам C).
- Очень легко читать чужой код (из-за п.1, стандартизированных отступов, компактности языка, а также благодаря специальному упору на читаемость в дизайне языка). По сравнению с C/C ...

Эта тайна была раскрыта с помощью Google Image Swirl, вот ссылка на доказательство - http://image-swirl.googlelabs.com/html?q=python#377.
from memcache import Client
c = Client(('127.0.0.1:11211',))
c.flush_all()

В джанге многое сразу покорило мое сердце - прекрасные модели, мощный URLconf, красивые шаблоны. Но вот джанго-формы открылись для меня во всей красе лишь недавно. Я быстро научился верстать и обрабатывать формы руками, поэтому не было надобности вникать в довольно большой посвященный им раздел документации (10 разделов!). В новом большом django-проекте ...
Потребовалось мне на днях сделать сериализацию простого Python-dictionary в XML. Элементы словаря - списки и прочие объекты. Готового сниппета я не нашел, написал свой компактный (меньше 30 строчек) сериализатор.
from StringIO import StringIO
from xml.etree.cElementTree import Element, ElementTree
try:
from django.utils.encoding import smart_unicode as unicode
except:
pass ...
В одном из проектов необходимо регулярно выкладывать код из ветки stage на staging сервер. Начали делать это вручную - входишь через ssh, делаешь git push origin stage, если нужно - обновляешь базу и затем перезапускаешь apache. К концу этой недели решили, что хорошо бы все эти действия выполнять одной командой. Я прошерстил ...
Краткий перевод обсуждения Recommendation against Python?:
kng
Я слышал, что сотрудникам Google не рекомендуют использовать Python для новых проектов, что мне кажется глупым, учитывая как много питоновского кода и поддержки самого языка Python исходит из Google. Я начал поиски информации, но ничего не нашел. Вы знаете что-то об этом или ...
Интересные ссылки
Модуль ipdb, позволяющий использовать встроенный в IPython дебаггер (работает автодополнение и все прочие приятности). import ipdb; ipdb.set_trace() Upd. pip install ipdb (via Andrey Popp)
Питоновская библиотечка, упрощающая хранение бекапов в Amazon S3.
uWSGI
01.06.2010
uWSGI is a fast (pure C), self-healing, developer-friendly WSGI server, aimed for professional python webapps deployment and development (есть модули для apache2, nginx, cherokee и lighttpd)
Дима пишет: "В кои-то веки сделал Python реализацию Enum, которая мне нравится :) Опыт использования показал, что пользоваться очень удобно :) Идея трюка с определением порядка атрибутов класса сперта из Django. Мы используем строковые константы, но если кому-то нужна числовая автонумерация - код очень легко дополнить"
Programming as a profession is only moderately interesting. It can be a good job, but if you want to make about the same money and be happier you could actually just go run a fast food joint. You are much better off using code as your secret weapon in another profession.
People who can code in the world of technology companies are a dime a dozen and get no respect. People who can code in biology, medicine, government, sociology, physics, history, and mathematics are respected and can do amazing things to advance those disciplines.
В одной компании было 2 команды: одна писала на C#, другая на Python. Прежде чем сделать окончательный переход на Python+Django для веб-приложений, они 6 месяцев проводили измерения скорости разработки в обоих командах. По их измерениям, Python+Django разработчик заменяет двоих разработчиков на C#+ASP.NET
Питоновская библиотека, делающая транслитерацию unicode-строк в максимально близкие ascii-строки. Поддерживается даже китайский язык.
Из этого списка я пропустил только itertools. Ну и Python Cookbook не читал (электронную читать не хочу, разве что бумажную найду когда-нибудь - в метро почитать). Itertools - ого-го! Все остальное - и подавно must read.
It all got started, I believe, because the very earliest Googlers (Sergey, Larry, Craig, ...) made a good engineering decision: "Python where we can, C++ where we must" (Alex Martelli)
Pure-Python implementation of the Git file formats and protocols. Named after the village in which Mr. and Mrs. Git live in the Monty Python sketch.
По совету из статьи Code Like a Pythonista скачал документацию по питону - теперь нырять в неё немного быстрее. Кто бы мог подумать, что в 2010 году, в Москве, с многомегабитным интернетом, это будет актуально :)))))
Swap Values
In other languages:
temp = a
a = b
b = temp
In Python:
b, a = a, b
Юрий Юревич пишет: "Есть один интересный человек, Янис Ляйдель, также известный под ником jezdez. Помимо всего прочего (Pinax & Django core dev, ключевая фигура в немецком Django-коммунити), он известен коллекционированием полезных Django-приложений. Рекомендую посмотреть список “зафоловленных” им приложений на GitHub и Bitbucket, возможно найдете что-нибудь интересное."
Набор лучших практик от ребят из Chicago Tribune: version control, python, django, javascript, html/css, images, testing.
Людвиг - отличный питонист из Швеции. Одна из его библиотек, pylibmc, скорее всего будет использоваться в django.
Some quick notes about the coming plans by the "other" Python implementations from today's Python Language Summit at PyCon 2010
Werkzeug - набор wsgi-утилит, я пользуюсь очень часто их дебаггером. Новая версия дружит с Google Appengine SDK.
"Живой опыт программирования, Python, Django, современные языки и немного фотографий" - много работал с Толиком, даже на питоне вместе от души попрограммировали. Отличный человек и программист, а сейчас еще и блоггер. Рекомендую читать!
Толик Востряков пишет про библиотеку Coverage, показывающую покрытие тестами python/django кода
"Experimental (but obviously restricted) Python-to-C++ compiler." Спросил у автора, в чем отличие от Cython, ответ - "cython relies on type declarations and other manual 'hints' to optimize programs. shed skin's goal is to statically compile restricted python code without any such manual hints"
coev framework is a stab on providing reasonably fast asynchronous IO to both Python code itself, and any C extension modules used
Первый программистский пост Толика Вострякова. 1. MultiTextInputWidget - виджет для формы, представляющий json-поле из базы данных в виде нескольких полей на форме. 2. Разные способы определения свойств в Python
В Unladen Swallow (проект по ускорению CPython) используются патчи к cPickle, изначально написанные для YouTube.
David Beazley использует улучшенные Python-генераторы для реализации coroutines. И с помощью этих coroutines строит кооперативную нано-ОС и микро-веб-фреймворк. Я встречал coroutines в первом томе Кнута и с тех пор не видел их много лет, и вот теперь снова встречаю их в Python. Удивительно и познавательно! Иван, спасибо за наводку!
Очень интересное и свежее (всего 11 дней назад) обсуждение про различные асинхронные python-фреймворки. Все больше и больше новых библиотек опирается на Coroutines via Enhanced Generators и это очень хорошо!
Adisp
11.12.2009
Python-библиотечка (2 декоратора и 1 класс) для удобного написания асинхронного кода без явного указания callbacks.
Исходники
reddit.com. Используют pylons, paste. Понравился декоратор @validateForm - форма создается на лету и валидирует параметры API. Очередь асинхронных задач работает через AMQP (RabbitMQ, Erlang).
Сегодня нашел сайт со ссылками на русскоязычные ресурсы по Python, в том числе - блоги питонистов.
Part1 и
Part 2 - в последние месяцы в блогах о Python и Django много пишут про
Fabric, инструмент позволяющий автоматизировать деплоймент Python-проектов.
Обсуждение в
гугл-группе Unladen Swallow на следующие темы: почему Python используется нечасто в новых проектах Google, какие задачи будут решать Unladen Swallow и PyPy, какова роль Cython. Участвуют сотрудники Google, работающие над Unladen Swallow (ускорение CPython в 5 раз), и другие интересные люди.
Very compliant Python interpreter. Not ready as a drop-in replacement of CPython ... yet. They plan to release JIT-ready version somewhere early 2010. It should be able to speed up real-world programs.
Отличное руководство об использовании библиотеки pdb для отладки python-приложений (via
Simon Willison)