当前位置:  开发笔记 > 编程语言 > 正文

在Python中从头开始构建:使用什么?

如何解决《在Python中从头开始构建:使用什么?》经验,为你挑选了2个好方法。

我很幸运能够完全控制我公司应用程序的架构,我决定废弃用Ruby/Rails编写的原型并重新开始使用Python.这有几个原因:我想学习Python,我更喜欢语法,我基本上说"F**k it,让我们这样做."

因此,请记住,这将是一个非常密集的应用程序,我想听听您对以下内容的意见:

通用Web框架

ORM /数据库层(可能与MongoDB一起使用)

具有oAuth/xAuth身份验证的RESTful API

测试/ BDD支持

消息队列(如果可能,我想在Python中保留它)

API需要与Clojure应用程序接口来处理一些内部数据,并与消息队列接口,所以如果它不是Python,那么拥有一些库是很棒的.

TDD/BDD对我来说非常重要,所以测试越多越好!

阅读你对此的看法真的很有趣.非常感激.

我最好的,

杰米



1> Garethr..:

构架

好吧,所以我在这里有点偏颇,因为我目前大量使用Django并在伦敦组织Django用户组,因此在阅读以下内容时请记住这一点.

从Django开始,因为它是一种很棒的网关药物.大量的文档和文献,一个非常活跃的人们可以与之交谈的社区以及围绕网络的大量示例代码.

这完全是非技术性原因.Pylons在Python哲学方面可能更纯粹(更多的是离散零碎的集合),但很多技术内容都是个人偏好,至少在你进入Python之前是这样.将Stack Overflow上非常活跃的Django标签与pylons或turbogears的标签进行比较,我认为使用Django简单易用,无论代码如何.

我个人默认使用Django,但发现越来越多的时间我实际上选择使用更简单的微框架进行编写(想想Sinatra而不是Rails).很多东西可供选择(这里有好的列表,http://fewagainstmany.com/blog/python-micro-frameworks-are-all-the-rage).我倾向于使用MNML(因为我写了部分内容并且它很小)但是其他的都是积极开发的.我倾向于为小型,愚蠢的Web服务执行此操作,然后将这些服务与Django项目串联在一起为中间人服务.

值得注意的是这里是发动机.你必须在它的限制内工作,它不是为所有东西而设计的,但它是一个很好的方式来玩Python并获得一些东西并快速工作.它为学习和实验提供了一个很好的测试平台.

蒙戈/ ORM

在MongoDB前面,您可能首先要查看基本的python mongo库(http://api.mongodb.org/python/),看看它是否包含您需要的所有内容.如果你真的想要更多东西,那么mongoengine(http://hmarr.com/mongoengine/)可能就是你想要的东西.一群人正在努力使Django与nosql后端更加无缝地集成.其中一些是未来的Django版本,但django-norel(http://www.allbuttonspressed.com/projects/django-nonrel)现在有代码.

对于关系数据,如果你想要独立的东西,SQLAlchemy(http://www.sqlalchemy.org/)是很好的.如果您使用Django,Django的ORM也非常出色.

API

最官方的Oauth库是python-oauth2(http://github.com/simplegeo/python-oauth2),它可以轻松地将Django示例作为其文档的一部分.

活塞(http://bitbucket.org/jespern/django-piston/wiki/Home)是一个Django应用程序,它提供了许多用于构建API的工具.它的优点是非常活跃,维护良好,并且在各地都有生产.其他项目也存在,包括Dagny(http://zacharyvoase.github.com/dagny/),这是在Rails中创建类似于RESTful资源的早期尝试.

实际上,任何Python框架(甚至只是原始的WSGI代码)对于这类任务都应该相当不错.

测试

Python将unittest作为其标准库的一部分,而unittest2在python 2.7中(但也向http://pypi.python.org/pypi/unittest2/0.1.4反向移植到以前的版本).有些人也喜欢Nose(http://code.google.com/p/python-nose/),这是一个具有一些附加功能的替代测试运行器.Twill(http://twill.idyll.org/)也很不错,它是一种"用于Web浏览的简单脚本语言",因此非常适合某些功能测试.Freshen(http://github.com/rlisagor/freshen)是Python的黄瓜端口.我还没有在愤怒中使用它,但现在快速看一下它比我上次看的时候要好得多.

我实际上也使用Ruby进行Python应用程序和apis的高级测试,因为我喜欢快速和黄瓜的组合.但我很奇怪,并从其他Python人员那里获得有趣的外观.

消息队列

对于消息队列,无论我使用什么语言,我现在总是使用RabbitMQ.我过去在stompserver上取得了一些成功,但Rabbit非常棒.不要担心它本身不是用Python编写的,PostgresSQL,Nginx或MongoDB都不是 - 所有这些都是有充分理由的.您关心的是可用的库.你在这里寻找的是py-amqplib(http://barryp.org/software/py-amqplib/),这是一个用于讨论amqp的低级库(用于与兔子交谈的协议以及其他消息队列) .我还使用了Carrot(http://github.com/ask/carrot/),它更容易上手并提供更好的API.如果你熟悉那就想想Ruby中的兔子.

环境

无论你决定在Python生态系统中使用什么零碎的东西,我都建议你找一个pip和virtualenv(http://clemesha.org/blog/2009/jul/05/modern-python-hacker-tools-virtualenv-fabric -pip / - 请注意,结构也很酷,但不是必需的,这些文档在该工具上已经过时了).考虑使用没有gem,bundler或rvm的Ruby,你将会朝着正确的方向前进.


我强烈推荐Flask作为web开发框架.看看这个.

2> chiggsy..:

好吧,你可能犯了一个错误,就像我开始使用python时那样.

在你决定像django之类的东西之前,这是一个优秀但非典型的 python web框架,花一个晚上拥抱:

这是一个好的开始.确保你做一个小Werkzeug观看,然后看看一些经典的WebOb.也许,如果你感受到血液中的火焰,你可能会,wsgi有点瑕疵,但只有神灵,请查看Flask

我不是说使用它,Django也很漂亮,但是如果你不了解python,并且你经历了django,你就冒着学习框架的风险.

WSGI非常简单.你会发现有关Paste,Pastescript和Pylons的信息.

然后,做出决定.学习做骨头wsgi或Flask的东西,比如变量赋值,使用解释器,样式关注点,测试,3个文件几晚,而不是django会更容易.住2晚.然后你会看到python web框架之间的巨大相似性,而不是差异.天啊,你甚至可以和Flask一起滚动.

只是一些建议,我用红宝石做了同样的事情,通过Rails进行,并且......好吧,强烈的话说.

语言,然后是基本的wsgi和测试,然后选择你的框架和滚动

推荐阅读
Chloemw
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有