Skip to content

Files

Latest commit

author
chenfeng2
Dec 10, 2015
d60f361 · Dec 10, 2015

History

History

dev_server

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
SAE Python development server - experimental

All Rights Reserved 2011
SAE Python Team

目前支持的服务包括:mysql, taskqueue, memcache, storage, mail。
大部分的服务直接运行dev_server.py进行调试就可以了,部分服务需要做一些配置。

注意: 本工具仅为应用开发便利之用,对sae python环境的模拟并不完整。

Install
--------------

    sudo python setup.py install

基本使用
------------

使用svn检出app代码之后,建立以数字为标识的发布目录,切换到发布目录:

    $ pwd
    /home/jaime/source/blackfire/1

编辑index.wsgi和config.yaml:

    $ vi index.wsgi
    import sae

    def app(environ, start_response):
        status = '200 OK'
        response_headers = [('Content-type', 'text/plain')]
        start_response(status, response_headers)
        return ['Hello, world! reloading test3']

    application = sae.create_wsgi_app(app)

    $ vi config.yaml
    ---
    name: blackfire
    version: 1
    ...

运行dev_server.py:

    $ dev_server.py 
    MySQL config not found: app.py
    Start development server on http://localhost:8080/

访问 http://localhost:8080 端口就可以看到Hello, world!了。

使用MySQL服务
----------------

配置好MySQL本地开发server,使用 `--mysql` 参数运行dev_server.py。

    $ dev_server.py --mysql=user:password@host:port

现在你可以在应用代码中像在SAE线上环境一样使用MySQL服务了。dev_server.py默认使用
名为 `app_应用名` 的数据库。

使用storage服务
---------------

使用 `--storage-path` 参数运行dev_server.py。

    $ dev_server.py --storage-path=/path/to/local/storage/data

本地的storage服务使用以下的目录结构来模拟线上的storage。

    storage-path/
          domain1/
                key1
                key2
          domain2/
          domain3/

--storage-path配置的路径下每个子文件夹会映射为storage中的一个domain,而每个子文
件夹下的文件映射为domain下的一个key,其内容为对应key的数据。

.. note: 

    为方便调试,dev_server自带的sae.storage在某个domain不存在的情况下会自动创建
    该domain。线上环境中的domain需要在sae后台面板中手动创建。

使用pylibmc
--------------

dev_server自带了一个dummy pylibmc,所以无须安装pylibmc就可以直接使用memcache服务
了。该模块将所有的数据存贮在内存中,dev_server.py进程结束时,所有的数据都会丢失
。

使用kvdb
----------------

kvdb默认数据存在内存中,dev_server.py进程结束时,数据会全部丢失,如果需要保存数据,
请使用如下命令行启动dev_server.py 

    $ dev_server.py --kvdb-file=/path/to/kvdb/local/file