SAE Python如何搭建本地开发环境
2023-02-18 15:28:49 时间
SAE是Sina推出的AppEngine,目前支持Python运行环境。和所有PAAS一样,服务器环境和本地开发环境总是有区别,如果在开发和部署阶段不断修改代码,会非常繁琐。本文讲述如何在本地和服务器共享同一代码版本,可以在本地调试,服务器直接部署。
首先,因为Python本身的动态特性和强大而简介的语法,我们实现这一目标非常容易(在此对Java开发人员表示遗憾)。假定我们确定用web.py框架,mysql数据库,memcache缓存,这3个组件SAE都支持,但和本地环境均有差异。
首先我们看web.py在本地和SAE是如何运行的:
# 本地
app = web.application(('/(.*)', 'PageHandler'), globals())
if __name__ == "__main__":
app.run()
# SAE
app = web.application(('/(.*)', 'PageHandler'), globals()).wsgifunc()
application = sae.create_wsgi_app(app)
将两者合并,我们得到一个既可以直接在本地运行,又可以直接在SAE运行的代码:
app = web.application(('/(.*)', 'PageHandler'), globals())
if __name__ == "__main__":
app.run()
else:
import sae
application = sae.create_wsgi_app(app.wsgifunc())
假定文件名是app.py,则我们可以直接运行app.py就可以本地运行,而SAE要求启动文件是index.wsgi,可以创建一个硬链接至index.wsgi就可以了(在此对Windows开发人员表示遗憾,必须复制一份文件)
MySQL一般在本地运行开发环境,而SAE的MySQL环境参数和本地不一致,但我们可以借助SAE的MySQL常量实现动态加载配置:
def _create_db():
# 本地环境
host = 'localhost'
db = 'weather'
port = 3306
user = 'weather'
pw = 'weather'
try:
import sae.const
db = sae.const.MYSQL_DB
user = sae.const.MYSQL_USER
pw = sae.const.MYSQL_PASS
host = sae.const.MYSQL_HOST
port = int(sae.const.MYSQL_PORT)
except ImportError:
pass
return web.database(dbn='mysql', host=host, port=port, db=db, user=user, pw=pw)
db = _create_db()
随后引用db变量就可以完成数据库操作。
SAE的memcached用的pylibmc,但是本地开发推荐用memcache(一个纯Python客户端),由于所有的memcached的客户端接口都是完全一样的(Python的动态特性保证了接口一致,Java不行,必须预定义接口,各个客户端去实现),本地和远程可共享以下代码:
def _create_memcache_client():
try:
import pylibmc
return pylibmc.Client()
except ImportError:
import memcache
return memcache.Client(['127.0.0.1:11211'])
cache = _create_memcache_client()
充分利用Python的动态特性,以及模块的动态导入特性,我们就可以写出一份代码,本地和远程同时运行。
相关文章
- 0901-安装Python3.8
- 新Python项目:替换式密码
- Python格式化输出
- PHP+Python,轻量维护超轻松
- Python免杀过360
- Python开发Brup插件检测SSRF漏洞和URL跳转
- python写一个能变身电光耗子的贪吃蛇
- Python分布式爬虫框架Scrapy 打造搜索引擎(四) - 爬取博客网站
- 万能调试|Python Scrapy框架HTTP代理的配置与调试
- 【好书推荐】《Python黑魔法指南》-附高清PDF版
- C、C++、Java到Python,编程入门学习什么语言好?
- Python 安装
- Python 3.11正式版来了,比3.10快10-60%,官方:这或许是最好的版本
- 基于Python的OpenCV关于色彩空间与通道的操作
- 2023PyCharm激活,码上使用,最新可用,Python快速使用
- 独家 | 使用python马尔科夫链方法建模星巴克等待时长
- 解放双手,python实现自动刷抖音短视频
- 用Python破解压缩包解压密码代码
- Python快速爬取车标网图片,以后不要说这什么车你不认识了!
- 抖音上超好听的神曲音乐,Python教你一次性下载