Flask on SAE

来源:互联网 发布:flexpaper flash.js 编辑:程序博客网 时间:2024/06/15 21:05

什么是困难呢?
从过年的时候就想部署Flask了,学会了部署在Heroku,但是国内访问太慢,于是想放在熟悉的SAE上,但是SAE真的是教程说明很难为我,需要不断的摸索,终于在年中的五一,尝试了一下。
本地版安装还是遇到的安装venv的问题,这个问题在《FlaskWeb开发》有说明。
与本地部署不同的地方有以下几点:
1. 添加requirements.txt 文件
容器云通过判断你的应用根目录下是否存在 requirements.txt 文件来判断你的应用是否是 Python 应用,所以,即使你的应用没有任何第三方依赖,你仍然需要在根目录下创建一个空的 requirements.txt 文件。
2. 指定 Python 版本
如果你想要指定你想要使用的 Python 版本,你可以通过在你的应用的根目录下创建一个 runtime.txt 文件,在里面写上你要使用的 Python 版本。例如:

$ cat runtime.txtpython-3.5.1


3. 指定如何运行应用程序
你需要通过Procfile来指定如何运行你的应用程序。

web: python hello.py


4. 第三方依赖
容器云在构建应用的时候会执行下面的命令来安装所有的第三方依赖包,所以你不用将这些第三方依赖包提交入你的代码仓库中,你只需要在 requirements.txt 文件中指定你有哪些依赖即可。

$ pip install -r requirements.txt --allow-all-external

除了使用新浪云上已经预装的模块之外,您还可以通过以下方式给自己的应用添加第三方依赖包。
首先,在应用的根目录下创建一个第三方依赖包目录 vendor 。

$ mkdir vendor

调用 pip 命令安装依赖包,使用其 -t 选项指定第三方包的安装目录。

$ pip install -t vendor PACKAGE ...

将 vendor 目录和应用的代码一起提交,即可在应用代码里使用安装的第三方依赖包了。

注解:
需要 pip 6.0.0 或者更高版本。

如果依赖包安装的目录名不为 vendor ,你需要在 index.wsgi 文件的最开始,添加以下代码,将目录加入到 sys.path 中。

import saesae.add_vendor_dir('路径')

注意:以上代码得放在 index.wsgi 的最前面,所有其它代码之前。
sae.add_vendor_dir(dir)
将 site 目录或者 virtualenv 目录加入到 sys.path 中
参数: dir – site 目录或者 virtualenv 目录的相对路径(相对于应用的根目录)

0 0
原创粉丝点击