usar tutorial por mega maestro difícil desde curso completo como cero aprende python orm rest frameworks

tutorial - Arquitectos desde cero en Python: ¿qué usar?



python tutorial (4)

Estoy utilizando la biblioteca de Nevow basada en Twisted Framework para la aplicación web basada en python.

Todos sus criterios encajan en este marco único.

Tengo la suerte de tener control total sobre la arquitectura de la aplicación de mi empresa, y he decidido desechar nuestro prototipo escrito en Ruby / Rails y comenzar de nuevo en Python. Esto es por algunas razones: quiero aprender Python, prefiero la sintaxis y básicamente dije "F ** k it, vamos a hacerlo".

Entonces, teniendo en cuenta que esta será una aplicación bastante intensiva, me gustaría escuchar sus opiniones sobre lo siguiente:

  • Marcos web genéricos
  • ORM / Capa de base de datos (quizás para trabajar con MongoDB)
  • API RESTful con / oAuth / xAuth autenticación
  • Pruebas / soporte BDD
  • Cola de mensajes (me gustaría mantener esto en Python si es posible)

La API tendrá que interactuar con una aplicación Clojure para manejar algunas cosas internas de datos e interactuar con la cola de mensajes, por lo que si no es Python sería genial tener algunas bibliotecas.

TDD / BDD es muy importante para mí, así que cuanto más probado, ¡mejor!

Será realmente interesante leer tus pensamientos sobre esto. Muy apreciado.

Mi mejor,

Jamie


Ok, podrías estar cometiendo un error, el mismo que hice cuando empecé con python.

Antes de decidirse por una cosa como django, que es un marco web de python excelente, pero atípico , pase una noche acurrucada con:

This es un buen comienzo. Asegúrate de hacer un poco de observación de Werkzeug , luego echa un vistazo a algunos WebOb clásicos. Tal vez, si sientes el fuego en la sangre, y tal vez, wsgi es un poco defectuoso, pero solo para los dioses, echa un vistazo a Flask

No estoy diciendo que lo uses, Django también es hermoso, pero si no conoces python, y pasas por Django, corres el riesgo de aprender un framework.

WSGI es super sencillo. Encontrarás información sobre Pegar, y Pastescript, y Pilones.

Entonces, toma tu decisión. Será mucho más fácil aprender cosas haciendo esquemas wsgi o Flask, cosas como asignación de variables, usar el intérprete, inquietudes de estilo, pruebas, en 3 archivos durante un par de noches, en lugar de django. Tomar 2 noches. Luego verá la gran similitud entre los marcos web de Python, en lugar de las diferencias. Demonios, incluso podrías rodar con Flask.

Solo un consejo, hice lo mismo con ruby, entrando por Rails y ... bueno, se dijeron palabras fuertes.

Idioma, luego wsgi básico y pruebas, luego elija su marco y ruede


Soy nuevo en Python y planeo profundizar más este año. He tenido algunos inicios falsos en esto, pero siempre las necesidades profesionales me llevan de vuelta a PHP. Las pocas veces que he hecho algo de desarrollo, he tenido muy buenas experiencias con web2py como un framework de python. Está bastante bien hecho, y completo en características, aunque sigue siendo extremadamente ligero. La capa de base de datos parece ser muy flexible y madura.

En cuanto a TDD / BDD y el resto de sus preguntas, no tengo experiencia con las opciones de python, pero me interesaría escuchar lo que dicen los demás.


Marcos

De acuerdo, aquí estoy un poco sesgado, ya que actualmente uso Django y organizo el Grupo de Usuarios de Django en Londres, así que tenlo en cuenta al leer lo siguiente.

Comienza con Django porque es una gran droga de entrada. Mucha documentación y literatura, una comunidad muy activa de personas con quienes hablar y muchos códigos de ejemplo en la web.

Esa es una razón completamente no técnica. Los pilones son probablemente más puros en términos de la filosofía de Python (es mucho más una colección de partes y partes discretas) pero muchas de las cosas técnicas son las preferencias personales, al menos hasta que te adentres en Python. Sin embargo, si comparo la muy activa etiqueta Django en con la de los pilones o turbogears, diría que comenzar con Django es más fácil, independientemente de cualquier cosa que tenga que ver con el código.

Personalmente, prefiero Django, pero encuentro que cada vez que más tiempo opto por escribir usando micro marcos más simples (piense en Sinatra en lugar de en Rails). Hay muchas cosas para elegir (buena lista aquí, http://fewagainstmany.com/blog/python-micro-frameworks-are-all-the-rage ). Tiendo a usar MNML (porque escribí partes de él y es muy pequeño) pero otros están desarrollados activamente. Tiendo a hacer esto para servicios web pequeños y estúpidos, que luego se unen con un proyecto Django en el medio de personas.

Vale la pena señalar aquí es appengine. Tienes que trabajar dentro de sus limitaciones y no está diseñado para todo, pero es una excelente manera de jugar con Python y obtener algo y trabajar rápidamente. Es un excelente banco de pruebas para el aprendizaje y la experimentación.

Mongo / ORM

En el frente de MongoDB es probable que desee consultar la biblioteca básica de Python Mongo ( http://api.mongodb.org/python/ ) primero para ver si tiene todo lo que necesita. Si realmente desea algo más como ORM, entonces mongoengine ( http://hmarr.com/mongoengine/ ) puede ser lo que está buscando. Un grupo de personas también está trabajando para que Django se integre específicamente de manera más transparente con los backends de nosql. Parte de eso es para futuros lanzamientos de Django, pero django-norel ( http://www.allbuttonspressed.com/projects/django-nonrel ) tiene código ahora.

Para datos relacionales, SQLAlchemy ( http://www.sqlalchemy.org/ ) es bueno si quiere algo independiente. El ORM de Django también es excelente si estás usando Django.

API

La biblioteca más oficial de Oauth es python-oauth2 ( http://github.com/simplegeo/python-oauth2 ), que fácilmente tiene un ejemplo de Django como parte de su documentación.

Piston ( http://bitbucket.org/jespern/django-piston/wiki/Home ) es una aplicación de Django que proporciona muchas herramientas para crear API. Tiene la ventaja de ser bastante activo y bien mantenido y en producción en todo el lugar. También existen otros proyectos, incluido Dagny ( http://zacharyvoase.github.com/dagny/ ), que es un intento inicial de crear algo similar a los recursos RESTful en Rails.

En realidad, cualquier marco Python (o incluso solo el código WSGI) debe ser razonablemente bueno para este tipo de tarea.

Pruebas

Python tiene unittest como parte de su biblioteca estándar, y unittest2 está en python 2.7 (pero también tiene versiones anteriores en http://pypi.python.org/pypi/unittest2/0.1.4 ). A algunas personas también les gusta Nose ( http://code.google.com/p/python-nose/ ), que es un corredor de prueba alternativo con algunas características adicionales. Twill ( http://twill.idyll.org/ ) también es bueno, es un "lenguaje de script simple para la navegación web", muy útil para algunas pruebas funcionales. Freshen ( http://github.com/rlisagor/freshen ) es un puerto de pepino a Python. Todavía no me he acostumbrado a usar esto enojado, pero una mirada rápida ahora sugiere que es mucho mejor que la última vez que miré.

De hecho, también uso Ruby para pruebas de alto nivel de aplicaciones y apis de Python porque me encanta la combinación de celeridad y pepino. Pero soy raro y recibo miradas divertidas de otras personas de Python por esto.

Colas de mensajes

Para una cola de mensajes, sea cual sea el idioma que esté usando, ahora siempre uso RabbitMQ. He tenido algunos éxitos con stompserver en el pasado, pero Rabbit es increíble. No se preocupe de que no esté escrito en Python, ni PostgresSQL, Nginx o MongoDB, todo por una buena razón. Lo que te importa son las bibliotecas disponibles. Lo que estás buscando aquí es py-amqplib ( http://barryp.org/software/py-amqplib/ ) que es una biblioteca de bajo nivel para hablar amqp (el protocolo para hablar con rabbit así como otras colas de mensajes) . También he usado Carrot ( http://github.com/ask/carrot/ ), que es más fácil de comenzar y proporciona una API más agradable. Piensa en el conejito en Ruby si estás familiarizado con eso.

Ambiente

Independientemente de las partes y piezas que decida usar del ecosistema de Python, recomendaría llegar a quién pip y virtualenv ( http://clemesha.org/blog/2009/jul/05/modern-python-hacker-tools-virtualenv-fabric-pip/ - tenga en cuenta que la tela también es genial, pero no es esencial y estos documentos están desactualizados en esa herramienta). Piense en usar Ruby sin gema, bundler o rvm y estará en la dirección correcta.