面向python的toolserver框架

Toolserver的Python项目详细描述


< DL>
此软件是OSI认证的开源软件。OSI认证为A
开源计划的认证标志。

toolserverframeworkforpython是一个易于创建web服务的框架。 它的主要特性是它作为一个独立的服务器运行,因此很容易 部署。它使用Medusa作为Web服务器核心,但采用线程模型 这很像Apache1.3的过程模型。

对于分发此软件的许可证,请阅读许可证。

对于安装指令,请读取文件install(实际上是 只需简单地安装toolserver,但仍可以阅读它以获取一些信息 您必须手动满足依赖关系)。

有关更多信息,请查看BitBucket页面:http://bitbucket.org/rfc1437/toolserver/

一些要点说明为什么您可能希望查看toofpy:

  • 以行业实力和快速网络服务器为基础。静态内容 由高性能的Medusa服务器直接提供,动态 内容由动态管理的工作线程传递。
  • 作为url构造基础的工具的命名空间。混杂的 使用标准的静态web服务器来填充 工具已注册。
  • 专注于构建api,而不是构建完整的web 申请。如果需要,可以构建一个web应用程序,但是 不需要。想在肥皂或 XMLRPC?小菜一碟。
  • 所有的api都是两用的:它们可以通过web访问,也可以 在其他工具内部访问。如果构建完整的web应用程序, 它将由通信工具组成,其中工具通信 是通过调用定义良好的api,这些api既可以在内部使用,也可以 也可用于外部(如果您决定这样做)。
  • 工具的自动文档生成,均为HTML格式(用于 以及wsdl格式(对于需要它们的soap客户机)。 只需转到http://localhost:4334/api/" rel="nofollow">http://localhost:4334/api/(假设您的服务器在 默认端口和本地主机IP),您将获得到 已安装的工具及其各自的API文档-全部生成 从你的工具来源飞!
  • 按合同为webapi编程!当然,合同是 人类可读的文件。合同检查可以切换 打开或关闭。
  • 基于包装的rest样式api构建在标准rpc样式之上 API-不再需要为API风格而斗争了!
  • 生成临时工具的工厂工具 是工厂。这将为您提供完全动态的名称空间。
  • 用于rest样式api的集成身份验证方案。这个 使您能够在工具之上构建自己的身份验证级别 而不是强加给你一些预先建立的计划。这在0.3.6中改变了, 所以现在有两种认证方案,新的 基于标准用户+组定义,可以基于IP和 http基本身份验证,可以使用非标准rsa 身份验证。
  • 用于powerfull线程管理的集成工具。方法调用可以 同步和异步(使用与 动态web内容处理可以)。异步调用可以是 立即、排队(按每个工具队列的优先级序列化)或 计时.
  • 基于Medusa监视器的工具服务器的PowerFull Life调试器。 您可以看到服务器在做什么,并将python代码注入 运行系统,查看变量,甚至更改它们。
  • 简化格式良好的html生成的简单html呈现库 以及XML内容。
  • 请求的动态和静态命名空间:全局配置变量 在服务器的生存期内可用,上下文变量是 在请求期间可用,静态变量在正常期间可用 方法调用。
  • 允许您组合方法的集成事务挂钩 数据库事务调用的成功或失败。你的方法失败了 数据库已回滚。
  • 有一些用于特殊目的的基类。例如,您可以选择 默认情况下,是否所有方法都应可从外部访问? 默认情况下不应访问任何内容。另一个基类是 具有用于身份验证的质询响应方案的rpc样式访问。和 如果你想很简单的话,有一个全唱歌全跳舞的基础班 集成身份验证-仅从authenticatedtool子类 标准工具。
  • 基于IP的访问列表(hosts.allow for fixed host assignment-给定的 IP集是指定的客户端系统名,没有附加身份验证 是需要的)。只需将<;clientname>;:<;ip>;行添加到主机。允许或 hosts.deny允许或拒绝访问。hosts.allow中的项已设置 客户名称。这可以用作工具的简单身份验证检查 只想限制对已知系统的访问。hosts.deny中的系统 根本不允许任何rpc调用(同时应用rpc和rest样式的访问!)
  • 基于RSA密钥的身份验证,以防止在您 没有要检查的静态IP或需要额外保护。如果你激活 RSA身份验证,这是强制的-没有其他(次要)身份验证 方案将被接受。
  • 新的rpc机制可以很容易地安装,很像工具。只写 您的rpc处理类,如soaphandler或xmlrpchandler,并将它们 进入本地工具目录(如果需要,可以是全局工具目录 在toolserver的所有实例中使用此rpc机制)。有 一种新的基于base64编码二进制pickle的rpc机制 picklerpcclient.py用于客户端代码,picklerpchandler.py用于 处理程序代码。这个机制比基于xml的rpc机制快得多,因为 只使用非常快的标准库。picklerpc仅适用于rsa 验证以启用最大安全性。
  • 如果您有wsgiref,就可以轻松地插入符合wsgi的应用程序 安装。这允许将toolserver与 其他来源。
  • 反动链为工具提供了一个强大的模式,使其可以与其他工具挂钩 工具处理。此机制是可重新启用的:如果挂接的工具失败,则 仍然会发生连锁反应,因此最初的工具功能 不会妥协的。其中一个用途是change system.request.rewrite 可用于添加uri预处理以在 任何工具都有机会看到uri。例如,可以使用 进行虚拟主机处理。

一些随机笔记(是的,有一天可能会有文档):

关于picklerpc的重要说明:pickle应该被视为不安全的,如 数据的二进制编码可能会引入一些您不希望的内容 发生在你的服务器上。因此,picklerpc在默认情况下被禁用 并且需要在配置中启用。你应该放点东西 服务器前面的保护,例如检查连接IP 仅用于受信任的源,并且不应使用picklerpc公开服务器 不可信的系统。为此,启用 picklerpc并在没有任何安全措施的情况下将服务器打开到Internet! 为了帮助防止损坏,picklerpc绑定到rsa身份验证-如果 不要设置RSA身份验证,picklerpc无法启用。

如何进行rsa身份验证:首先必须生成usefull 密钥对。使用服务器的"tsctl keygen"和"tsctl keygen"执行此操作 clientname"用于客户端并将客户端密钥移动到客户端计算机。什么时候? 实例化远程工具服务器实例(从toolserver.client模块) 现在可以传递pubkey、privkey和localname选项。如果你这样做了,你的电话 将有附加的http头,其中包含sha256散列、rsa签名和 你的姓名。服务器将检查这些(仅当启用rsauthenticate时 并在结果中提供相同的头。由于 rsa密钥这将是明显的缓慢,但更安全,因为你会 只允许与已知主机通信。要启用新主机,只需将其 进入toolserver的pubkeys目录的公钥。他们需要 以客户的名字命名。要禁用客户端,只需删除它的公钥并 重新启动服务器。

关于加密的说明:这个toolserver框架可以很容易地采用ssl 作为主要的传输安全协议。事实上,这会比 很自然-每个代理现在都应该支持connect 支持https连接。我没有这么做的原因(我可能会选择这样做 不过,在将来)工具服务器通常运行不好 已知港口。并使用默认端口以外的端口连接到服务器 现在需要管理员干预-允许连接的每个端口 需要在系统配置中输入。这是为了防止劫持 对未经授权的外部连接进行https代理。所以我选择了非 加密请求和响应的标准方法-调用本身 仍然由标准http传输,因此应该通过所有 你能想到的每一个代理。无需管理员干预或前端 服务器。记住,toofpy不是关于构建web应用程序,而是关于 构建web服务和分布式应用程序。如果你想与 在其他软件中,您应该使用soap或xmlrpc协议,并且不要使用 rpc加密的东西,因为那是非标准的。你仍然可以设置前端 做ssl的服务器,把toofpy放在后面,所以仍然可以 使用toofpy作为web应用程序的构建块,仅依赖于 标准协议和格式。只是看看加密和picklerpc 如果您在纯python环境中运行,则将其作为附加选项。

关于兼容性的说明:有些协议是非标准的(例如picklerpc 只能与python一起使用)或具有非标准扩展(例如 rsa身份验证是以某种非标准的方式完成的,这种方式目前只起作用 使用toolserver.client)。如果你想从广域访问你的web服务 客户的范围,你不应该使用那些非标准的功能。只是不要 启用picklerpc而不使用rsa身份验证-使用cram身份验证, 相反。cram身份验证使用一个非常简单的基于sha1的方案,因此 可以从大多数语言调用具有该身份验证方案的方法(使用 Java或Perl非常简单。cram认证依赖于一个共享的秘密, 不过。如果您被迫发明自己的身份验证机制,则 可以在验证方法中使用context.request并访问请求 直接使用数据和头-例如构建一些基于IP的身份验证 或者使用identid查找(IP通过 水母运输-你可能需要挖掘水母的来源才能看到 我在说什么)。如果一切都不能满足你的需要,你可以 在调用中传递用户和密码字段-请注意它们是 通过有线传输,所以设置一些加密通道 沟通完毕。一些简单的方法是只运行toolserver 在本地主机上,在它前面放置一个apache,让它处理所有 身份验证和SSL功能。

关于新python版本的说明:python 2.6不支持md5和sha模块 希望你改用hashlib。toolserver这么做了,但是medusa仍然 导入md5,因此会收到一个弃用警告。这是旧代码。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用split函数分割字符串,但没有得到期望的结果   未找到包含derby数据库嵌入架构的sql Java桌面应用程序错误   java elasticsearch vs solr用于定制全文搜索系统   java Android:创建没有startOffset的动画延迟?   java如何查看其他应用程序接收的数据?   java如何在Linux中使用D和classpath选项运行jar文件   java和域设计最佳实践   具有相同内存位置的java数组,将显示为输出   连接到java中的elasticsearch?   Java Playframework重定向到带有Json负载的外部url   java无法在Android平台上使用InputStream为蓝牙socket创建ObjectInputStream   使用POI将Excel日期转换为Java日期,年份未正确显示   oracle从数据库层还是Java层调用webservice?