`
ph4nut
  • 浏览: 5819 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

在Google App Engine部署Quixote

阅读更多
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

    "Quixote"这个名字源于西班牙文学巨匠塞万提斯的经典小说《堂吉诃德》(Don Quixote),在IT领域中,它可能是指一个特定的项目、工具或者技术。不过,由于提供的信息有限,无法确定具体是哪个IT相关的"Quixote"。...

    前端项目-quixote.zip

    在这个领域,"前端项目-quixote.zip" 提供了一个关于CSS单元和集成测试的解决方案。Quixote,这个名字来源于西班牙文学中的经典角色唐吉诃德,寓意着它可能是一个旨在挑战常规、解决复杂前端问题的工具或框架。 **...

    PyPI 官网下载 | Quixote-3.1a1.tar.gz

    标题中的"PyPI 官网下载 | Quixote-3.1a1.tar.gz"指出这是一个在Python Package Index (PyPI)上发布的软件包,名为Quixote,版本为3.1a1,且文件格式为tar.gz。PyPI是Python开发者发布和分享自己创建的Python库的...

    python 的django,quixote,uliweb三个web框架

    在Web开发领域,Python提供了多个优秀的Web框架,其中最知名的包括Django、Quixote和Uliweb。下面将对这三个框架进行详细阐述。 首先,Django是Python中最广泛使用的Web框架之一,被誉为“ batteries included ”的...

    PyPI 官网下载 | etna_quixote-1.0.8-py3-none-any.whl

    总的来说,通过PyPI下载的`.whl`文件是Python开发者常用的一种安装方式,它简化了包的部署流程,使得Python应用的构建和维护更加便捷。对于`etna_quixote`库,我们应当根据实际需求,进一步探索其功能和应用场景,...

    quixote:CSS单元和集成测试

    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等。这些组件协同工作,共同支撑起豆瓣的高并发和大数据...

    quixote:为CityShelf提供支持的搜索服务

    吉x德关于Quixote是为提供支持的搜索服务, 是一个网络应用程序,可使通过本地和独立书商快速便捷地搜索书籍。API端点所有请求/响应的Content-Type是application / JSON。 方法小路回复得到/ books /?field = value...

    miguel-de-cervantes-saavedra_don-quixote_john-ormsby:Miguel de Cervantes撰写的Don Quixote标准电子书版本的Epub来源。 约翰·奥姆斯比(John Ormsby)翻译

    在这个名为“miguel-de-cervantes-saavedra_don-quixote_john-ormsby”的压缩包中,包含的是《堂吉诃德》的Epub格式电子书源代码。Epub是一种开放的电子书标准,它允许内容以结构化的方式组织,支持文本重排和不同...

    豆瓣网技术架构

    在软件层面,豆瓣采用了MySQL 5数据库、Quixote Python Web框架以及Lighttpd+SCGI来处理Web请求,并利用Memcached来缓存数据以提高系统响应速度。 #### 硬件与操作系统 - **硬件**: 使用了较为基础的配置,但在当时...

    豆瓣的成长路线.pdf

    - **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万,加上非注册用户,日访问量达到约两千万。这种规模体现了豆瓣...

Global site tag (gtag.js) - Google Analytics