1
在Google App Engine部署GAE不支持的Python包是,通常的做法是把包压缩成ZIP格式,Python支持zipimport来载入这个ZIP包,这里注意一点具体的压缩做法:
(1) "在要压缩的文件夹,以我为例,就是Quixote,单击右键,用7z压缩成Quixote.zip"
(2) 压缩包例除了以py为后缀的其他文件,比如pyc,vim的swap文件都要删除
2
为了在本地用GAE SDK测试和上传至GAE,先在网站的文件夹建立app.yaml,这里的内容如下:
application: 29boys
version: 1
runtime: python
api_version: 1
handlers:
- url: /.*
script: main.py
3
接下来是最关键的一个步骤,建立上面app.yaml里面的handler,main.py,对于Quixote来说,这个文件可以这样:
import logging,os,sys
import thread
quixote_path = "quixote.zip"
sys.path.insert(0,quixote_path)
from quixote.publish import Publisher,cleanup
from quixote.directory import Directory
from MiniSite import MyRoot
if os.name=='nt':
os.unlink=lambda :None
class ThreadedPublisher(Publisher):
is_thread_safe = True
def __init__ (self, root_namespace, config=None):
Publisher.__init__(self, root_namespace, config)
self._request_dict = {}
def _set_request(self, request):
self._request_dict[thread.get_ident()] = request
def _clear_request(self):
try:
del self._request_dict[thread.get_ident()]
except KeyError:
pass
def get_request(self):
return self._request_dict.get(thread.get_ident())
#This is the quixote website to be deploy
#For logging
#from quixote import logger
#Logger = logger.DefaultLogger(access_log="f://acess_log.txt",error_log="f://error_log.txt")
def create_publisher():
return ThreadedPublisher(MyRoot())
#return Publisher(RootDirectory())
import traceback
from quixote import get_wsgi_app
from google.appengine.ext.webapp import util
if quixote_path not in sys.path:
sys.path.insert(0, quixote_path)
try:
pub = create_publisher()
application = get_wsgi_app()
except TypeError,e:
pass
def main():
# Run the WSGI CGI handler with that application.
util.run_wsgi_app(application)
if __name__ == '__main__':
main()
4
最后,就是完善3里面代码所引入的Quixote applicaction:MiniSite了,我也附上一个用于测试的代码
#-*- coding: utf-8 -*-
"""The mini root directory for the Quixote demo.
"""
import sys
reload(sys)
from quixote.directory import Directory
from quixote.util import dump_request
#sys.setdefaultencoding('utf8')
class MyRoot(Directory):
_q_exports = [""]
def _q_index(self):
res = """<h1>xxx</h1>"""
return res
5 总结
把Quixote部署到GAE后,PTL模板不能使用,这个原因还不知道
分享到:
相关推荐
"Quixote"这个名字源于西班牙文学巨匠塞万提斯的经典小说《堂吉诃德》(Don Quixote),在IT领域中,它可能是指一个特定的项目、工具或者技术。不过,由于提供的信息有限,无法确定具体是哪个IT相关的"Quixote"。...
在这个领域,"前端项目-quixote.zip" 提供了一个关于CSS单元和集成测试的解决方案。Quixote,这个名字来源于西班牙文学中的经典角色唐吉诃德,寓意着它可能是一个旨在挑战常规、解决复杂前端问题的工具或框架。 **...
标题中的"PyPI 官网下载 | Quixote-3.1a1.tar.gz"指出这是一个在Python Package Index (PyPI)上发布的软件包,名为Quixote,版本为3.1a1,且文件格式为tar.gz。PyPI是Python开发者发布和分享自己创建的Python库的...
在Web开发领域,Python提供了多个优秀的Web框架,其中最知名的包括Django、Quixote和Uliweb。下面将对这三个框架进行详细阐述。 首先,Django是Python中最广泛使用的Web框架之一,被誉为“ batteries included ”的...
总的来说,通过PyPI下载的`.whl`文件是Python开发者常用的一种安装方式,它简化了包的部署流程,使得Python应用的构建和维护更加便捷。对于`etna_quixote`库,我们应当根据实际需求,进一步探索其功能和应用场景,...
Quixote-CSS单元和集成测试 ... 例如,您可以测试一个元素是否在另一个元素下面,或一个元素与浏览器的视口的比较方式。 测试示例: // 'frame' is the Quixote test frame. See below for complete examples. var he
首先,豆瓣的技术架构主要由多个组件和层级构成,其中包括了LVS、nginx、SCGI、HTTP、quixote、app、DAE、apps、MySQL、memcached、BeansDB、redis、beanstalk等。这些组件协同工作,共同支撑起豆瓣的高并发和大数据...
吉x德关于Quixote是为提供支持的搜索服务, 是一个网络应用程序,可使通过本地和独立书商快速便捷地搜索书籍。API端点所有请求/响应的Content-Type是application / JSON。 方法小路回复得到/ books /?field = value...
在这个名为“miguel-de-cervantes-saavedra_don-quixote_john-ormsby”的压缩包中,包含的是《堂吉诃德》的Epub格式电子书源代码。Epub是一种开放的电子书标准,它允许内容以结构化的方式组织,支持文本重排和不同...
在软件层面,豆瓣采用了MySQL 5数据库、Quixote Python Web框架以及Lighttpd+SCGI来处理Web请求,并利用Memcached来缓存数据以提高系统响应速度。 #### 硬件与操作系统 - **硬件**: 使用了较为基础的配置,但在当时...
- **Quixote**:在没有Django、TurboGears等现代Web框架的时代,Quixote以其简单轻量的特点被选用。它支持REST风格的URL设计,有助于实现良好的用户体验。 - **Lighttpd + SCGI**:Lighttpd具有出色的动态和静态性能...
6. Quixote框架:在Django、TurboGears和Pylons等现代Web框架出现之前,豆瓣网使用了Quixote框架,它简单且轻量级,便于实现REST风格的URL。 7. Lighttpd Web服务器:Lighttpd以其出色的动态和静态内容处理能力著称...
通过使用nginx进行负载均衡,以及lighttpd配合SCGI与应用服务器(基于quixote框架)的交互,豆瓣实现了高效的内容服务。 在架构优化方面,豆瓣采用了一系列技术手段。例如,使用Memcached对数据进行缓存管理,显著...
洪强宁,作为豆瓣的首席架构师,曾在2010年的QCon北京大会上分享了豆瓣网的技术内幕。 1. **用户规模与访问量** - 当时,豆瓣网的注册用户已接近300万,加上非注册用户,日访问量达到约两千万。这种规模体现了豆瓣...