【BAE3.0使用系列】Python Runtime介绍

概述

BAE3.0中,python runtime运行在一个独立的容器中,我们直接使用系统自带python2.7.3官方版本,未修改或封禁任何函数和模块,开发者面对原生的python环境,应用创建和迁移的成本基本可以忽略。

3.0 VS 2.0

  • 3.0中同样需要遵循WSGI规范开发python-web应用, 开发者需要定义如下一个application
from bae.core.wsgi import WSGIApplication
def app(environ, start_response):
    status = '200 OK'
    headers = [('Content-type', 'text/html')]
    body = ['Hello BAE3.0\n\n']
    start_response(status, headers)
    return body
application = WSGIApplication(app)
  • 3.0中同样需要提供一个app.conf,用来重写url,详见
  • 3.0中不需要再关注2.0的bae.core.const常量(该模块3.0已被删除),开发者只考虑自己使用需要的变量,如使用mysql数据库时,直接从管理控制台中粘贴对应的dbname,api key,secret key等信息。
  • 3.0中不需要对环境限制有任何畏惧,因为3.0中放开了所有2.0的封禁与限制,开发者在原生环境中独占各种资源,自由使用python runtime
  • 3.0中我们不再只支持预装的模块,而是使用官方的包管理工具pip与requirements.txt来处理开发者们需要的第三方依赖。开发者只需在上传代码的同时,添加一个名为requirements.txt的文件,其中指定要求的依赖包信息,这些模块就会被下载安装到应用根目录的deps目录下。该路径已被隐式加入到搜索路径,开发者可直接在应用逻辑中导入使用。requirements.txt的书写规则简单描述就是:模块名+版本号,形如:
mod_name1 == version1
mod_name2 > version2
......
mod_nameN

详见。另目前我们自行维护的pypi源中主要包含http://pypi-ranking.info/alltime 中排名前100的软件包,详细的packages信息请查看http://bae3pypi.duapp.com/。其他模块我们仍会从官方pypi源中下载安装(注:速度上会存在延迟,故开发者较常用的python包可提交我们申请加入自有源)

  • 3.0中服务的使用与2.0类似,开发者需要先在管理控制台创建相应的组件,然后才能在应用逻辑中使用。目前支持fetchurl,mysql,mongodb和redis服务,fetchurl开发者直接使用python原生的httplib或urllib就能做到访问外网,抓取网页;mysql等服务开发者需借助上述的requirements.txt将client模块安装到应用目录下使用。

结语

3.0的各种变化与不同都是为了让开发者更加简单的,方便的,快捷的使用BAE,目前我们仍在各种优化与升级,后续还会有更多的新功能跟大家见面。

 

此条目发表在 未分类 分类目录。将固定链接加入收藏夹。

【BAE3.0使用系列】Python Runtime介绍》有 3 条评论

  1. Timmy 说:

    BAE3.0 python没有内置tornado了吗,import tornado.web都出错,是不是都需要通过pip来自行安装?有没有在3.0下的部署实例呢

  2. BAE 说:

    可以在根目录下放一个 requirements.txt,里面加上一行 tornado==2.1.1就行了

  3. ego008 说:

    “BAE3.0中同样需要遵循WSGI规范开发python-web应用”,使用tornado 也就有好多限制,可以把自己想要的tornado 版本放在自己的应用目录下。

发表评论