文档中心 > TAE 1.0云服务

python运行环境

更新时间:2016/05/11 访问次数:30378

基础运行环境

AE2.0 应用运行在一个独立的沙箱容器中(沙箱目录为:/ace/user/virtualenv ) ,使用Python2.7官方版本,开发者面对原生的Python环境。

注:如需登录VM运行Python命令或安装依赖, 请使用/ace/user/virtualenv/bin/python 和/ace/user/virtualenv/bin/pip 来执行,不要直接使用系统目录中Python。

WSGI和TAE

WSGI的全称是Web Server Gateway Interface,是一个描述Web服务器和Web应用之间如何通信的规范。PEP-333对其有详细的说明。
TAE遵循标准WSGI规范,TAE作为WSGI Server,你的应用是WSGI Client。你必须提供index.py文件,其中包含名为application的callable对象,application接受两个参 数,PEP-333里的environ和start_response,所有的请求都会路由到application。
当然,如果你使用了框架,一般不需要自己编写application,框架已经帮你搞定了。

关于应用路径

在TAE的环境里,用户的代码放在/ace/code目录下,同时这个目录已经加入到sys.path里,如果你的代码根目录里有个文件 hello.py,那么你可以通过/ace/code/hello.py访问这个文件,也可以在其他Python模块里直接import hello导入这个模块。

运行Python应用需要依赖index.py文件,index.py是一个标准的WSGI Client,需要在代码根目录中存在。示例如下:

def application(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/html')])
    return '<h1>Hello, web!</h1>'

如果有临时文件,可以写到/tmp目录下,这个目录也是应用独占的,不会跟其他应用共享。

web.py框架

import web
 
urls = (
    '/', 'index',
    '/proxy', 'proxy'
)

class index:
    def GET(self):
        return "Hello, world!"

application = web.application(urls, globals()).wsgifunc()

Flask框架

from flask import Flask
app = Flask(__name__)

@app.route('/')
def index():
    return 'hi'
	
application = app.wsgi_app

Django框架

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

第三方库声明依赖

作为一个Python应用,难免依赖一些开源的Python库。你完全不用自己在代码里带上这些依赖,只要告诉TAE, 系统会自动帮你安装的。

在你应用根目录放上创建一个文件:requirements.txt,写入所有依赖的lib,每个一行,如果要依赖特定的版本,在lib名字后加上==version即可。

web.py 
flask==0.1.0 
alibaba-python-sdk

注意:alibaba-python-sdk为TAE内部提供的python库,包含TAE提供的云服务SDK,安装时不需要指定版本。 安装alibaba-python-sdk时系统会自动安装MySQL-python,不需要再单独安装。

注意:有些lib需要编译安装,要求机器上先安装相应的头文件, TAE机器上不可能预先安装所有的头文件,所以,如果你依赖了需要编译安装的lib,可能会启动失败。遇到这种情况,你可以提工单,把需要安装的lib告诉我们,对于需求比较多的lib,我们会预先安装头文件。

FAQ

关于此文档暂时还没有FAQ
返回
顶部