配合
http://www.python.org/dev/peps/pep-0333/
http://pythonpaste.org/deploy/
看下面的example(从网络上改造而来,出处URL也搞忘记的),很快会对python的paste如何组织wsgi有一个简单的了解,
pastedeploylab.ini
[DEFAULT]
key1=value1
key2=value2
key3=values
[composite:pdl]
use=egg:Paste#urlmap
/:root
/calc:calc
[filter:logrequest]
username = root
password = root123
paste.filter_factory = pastedeploylab:LogFilter.factory
[filter:testrequest]
username = admin
password = admin
paste.filter_factory = pastedeploylab:TestFilter.factory
[app:calculator]
description = This is an "+-*/" Calculator
paste.app_factory = pastedeploylab:Calculator.factory
[app:showversion]
version = 1.0.0
paste.app_factory = pastedeploylab:ShowVersion.factory
[pipeline:root]
pipeline = logrequest testrequest showversion
[pipeline:calc]
pipeline = logrequest calculator
pastedeployed.py
import os
import webob
from webob import Request
from webob import Response
from paste.deploy import loadapp
from wsgiref.simple_server import make_server
#Filter
class LogFilter():
def __init__(self,app):
self.app = app
def __call__(self,environ,start_response):
print "filter:LogFilter is called."
return self.app(environ,start_response)
@classmethod
def factory(cls, global_conf, **kwargs):
print "in LogFilter.factory", global_conf, kwargs
return LogFilter
class TestFilter():
def __init__(self,app):
self.app = app
def __call__(self,environ,start_response):
print "filter:TestFilter is called."
return self.app(environ,start_response)
@classmethod
def factory(cls, global_conf, **kwargs):
print "in TestFilter.factory", global_conf, kwargs
return TestFilter
class ShowVersion():
def __init__(self):
pass
def __call__(self,environ,start_response):
start_response("200 OK",[("Content-type", "text/plain")])
return ["Paste Deploy LAB: Version = 1.0.0",]
@classmethod
def factory(cls,global_conf,**kwargs):
print
print "in ShowVersion.factory:"
print "global_conf=", global_conf
print "kwargs =", kwargs
return ShowVersion()
class Calculator():
def __init__(self):
pass
def __call__(self,environ,start_response):
req = Request(environ)
res = Response()
res.status = "200 OK"
res.content_type = "text/plain"
# get operands
operator = req.GET.get("operator", None)
operand1 = req.GET.get("operand1", None)
operand2 = req.GET.get("operand2", None)
print req.GET
opnd1 = int(operand1)
opnd2 = int(operand2)
if operator == u'plus':
opnd1 = opnd1 + opnd2
elif operator == u'minus':
opnd1 = opnd1 - opnd2
elif operator == u'star':
opnd1 = opnd1 * opnd2
elif operator == u'slash':
opnd1 = opnd1 / opnd2
res.body = "%s /nRESULT= %d" % (str(req.GET) , opnd1)
return res(environ,start_response)
@classmethod
def factory(cls,global_conf,**kwargs):
print "in Calculator.factory", global_conf, kwargs
return Calculator()
if __name__ == '__main__':
configfile="pastedeploylab.ini"
appname="pdl"
wsgi_app = loadapp("config:%s" % os.path.abspath(configfile), appname)
server = make_server('localhost',8989,wsgi_app)
server.serve_forever()
分享到:
相关推荐
官方离线安装包,亲测可用
Paste Deploy的核心功能在于它的“paste.ini”配置文件,它允许开发者以简洁、可读性强的方式定义和连接WSGI应用、中间件、服务器和其他相关组件。 在minitage.paste-1.3.162这个版本中,开发者可以期待一系列改进...
官方离线安装包,亲测可用
### PIL图像处理模块paste方法简单使用详解 #### 一、PIL与Pillow模块简介 在Python编程语言中,PIL(Python Imaging Library)是一个强大的图像处理库,它提供了多种功能来处理各种类型的图像文件。然而,由于PIL...
1. **Paste Deploy**:这是一个配置解析器,可以读取并解析ini格式的配置文件,使开发者能够根据不同的环境参数动态地部署Web应用。 2. **Paste Script**:提供了一套命令行工具,用于创建、测试和部署WSGI应用。它...
3. **Configurators(配置器)**:`minitage.paste`支持通过配置文件来设置和组合中间件,这些配置文件通常以`.ini`格式存在,易于理解和维护。 4. **Server Wrappers(服务器包装器)**:`paste`还提供了对多种Web...
《Python库 Paste-1.0.1-py2.4.egg:理解与应用》 在Python的世界里,库是开发者的重要工具,它们提供了一系列预定义的函数和模块,简化了编程过程,提高了代码的可复用性。本文将深入探讨Python库 Paste-1.0.1-py...
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
6. **PasteDeploy**: 这是一个配置管理工具,用于根据paste.ini文件中的配置加载和组合中间件链。 7. **RequestId**: 为每个请求分配唯一的ID,便于跟踪和诊断问题。 oslo.middleware库的安装非常简单,通过Python...
《Python库minitage.paste-0.0.1-alpha32深度解析》 在Python的世界里,库扮演着至关重要的角色,它们为开发者提供了丰富的功能和便利性,大大提升了编程效率。今天我们要深入探讨的是一个名为`minitage.paste`的...
### Python 图片指定区域替换:`img.paste` 函数详解 在图像处理领域,Python 提供了强大的库——PIL(Python Imaging Library),它可以让开发者轻松地进行图像的读取、显示、编辑等操作。其中,`img.paste` 函数...
**Python库 django_paste-1.0.0-py3-none-any.whl** 在Python的开发环境中,我们经常需要利用各种库来简化工作,提高效率。`django_paste`是这样一个库,它专为Python设计,特别适用于Django框架的项目。这个库的...
### Python安装及Jupyter Notebook配置知识点 #### 一、Python安装背景与常见问题 - **背景**:Python作为一门强大的编程语言,在数据科学、机器学习等领域应用广泛。无论是初学者还是资深开发者,都需要掌握如何...
Python的库生态系统丰富,使得开发此类翻译工具变得相对简单。 2. **剪贴板操作**:CopyTranslatePaste能够监听用户的剪贴板活动,一旦检测到有新的文本内容,就会自动触发翻译过程。这得益于Python的clipboard库,...
Paste
此外,你还可以查找配置文件(如`.config`或`.json`)以了解可调整的参数。 总结,Python结合`PIL`和`PyPDF2`库可以轻松地将PDF转换为长图。`pdf-to-long-image-main`项目为这一过程提供了一个便捷的解决方案,具体...
标题中的"PyPI 官网下载 | Paste-1.5.tar.gz"表明这是一个从Python Package Index(PyPI)官方源下载的软件包,名为Paste,版本号为1.5,其格式是tar.gz,这是一种常见的在Linux/Unix环境中打包和压缩文件的方法。...
在压缩包中,`二维码生成器.spec`是`PyInstaller`的配置文件,用于指定要打包的入口脚本、图标、窗口大小等信息。通过修改此文件,可以定制打包过程的细节。运行`pyinstaller 二维码生成器.spec`命令即可生成exe文件...
标题“python处理剪贴板内容源码及exe”和描述中的链接指向了一个关于使用Python...了解并掌握这些知识,可以帮助开发者创建涉及剪贴板交互的Python应用,比如自动化脚本、数据抓取工具,甚至是简单的用户界面程序。