Веб-фреймворк Python + [a] синхронизация задач;длительный опрос: не Django - PullRequest
3 голосов
/ 26 мая 2011

Мне нужно создать проект с веб-интерфейсом для управления синхронным выполнением задач (ala fabric), асинхронными задачами (AMQP) и длинным опросом / ajax для табличного просмотра результатов и очередей / больших, часто меняющихся наборов данных ( думаю tail -f syslog). У меня есть существующая кодовая база Python для многих специфических для реализации вещей.

После просмотра множества существующих фреймворков, очевидным ответом кажется Django + Celery. Однако я не хочу "изучать Django", и при этом мне не нужно 95% его функциональности. Мне просто нужна простая аутентификация, может быть, будет полезна sqlalchemy, easy ajax, amqp, xmlrpc.

Я бы рассмотрел использование Mongrel2, но у меня есть сильное предпочтение RabbitMQ, а не 0MQ (по нескольким причинам, связанным с реализацией).

Изначально я потратил много времени на изучение Twisted и в итоге получил несколько сотен полезных LOC, но обнаружил, что слишком много искажал код моей платформы, чтобы соответствовать его модели обратного вызова. На самом деле он очень хорошо «отвечал всем требованиям» (за исключением собственной реализации amqp), но это было так расстраивающе, и я прошел через столько итераций кода (по одной на каждый «поворотный момент»), что он вышел на 100%.

Может кто-нибудь помочь мне пройти через болото? Торнадо? Пилоны? отдавать? Пирамида? Колба? Бутылка? CherryPy? Web2py? Пастер / WebOb? Все остальное @ http://wiki.python.org/moin/WebFrameworks?

Edit:

Чтобы было ясно, интеграция с RabbitMQ (или другим провайдером amqp) имеет первостепенное значение и действительно является проблемой.

Ответы [ 3 ]

2 голосов
/ 27 мая 2011

У меня нет полного представления о веб-фреймворках Python, но я просто хочу поделиться своей точкой зрения на 2 из них:

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

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

Надеюсь, это поможет

1 голос
/ 31 мая 2011

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

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

Яв настоящее время создаю приложения Python, используя RabbitMQ и используя amqplib посредством kombu.Изначально я выбрал kombu на случай, если захочу поменять библиотеки и использовать pika или что-то еще, но теперь я хотел бы, чтобы я только что использовал amqplib и построил правильную модель Pythonic AMQP поверх этого.

Потратьте немноговремя на сайте RabbitMQ, чтобы прочитать некоторые блоги и слайд-презентации на AMQP, прежде чем вы углубитесь в кодирование, иначе вы не поймете модель AMQP и не усложните себе жизнь.

Пожалуйста, не надоиспользуйте xmlrpc, если вам не нужно общаться с другими приложениями.Bottle делает простые приложения RESTful настолько простыми, что XMLRPC просто лишняя сложность.

0 голосов
/ 27 мая 2011

Пара предложений.

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

web.py - еще один чрезвычайно легкий и простой в использовании фреймворк.Он более полный, чем CherryPy, включая шаблоны и другие функции.

Обычный wsgi - неплохой выбор, если ваши потребности предельно просты.Делать простые вещи немного сложнее, чем CherryPy или Web.py.WSGI является наименьшим общим знаменателем, в наши дни большинство веб-фреймворков построено поверх него.

...