托托是旨在加速API服务器开发的小框架。它是建立在龙卷风的顶部,目前可以使用MySQL或MongoDB中作为后盾的数据库。
安装
安装托托的最简单的方法是使用点子。简单的点子运行安装-e混帐混帐+://github.com/JeremyOT/Toto.git#egg=Toto到你的机器上安装托托模块的最新版本。
用法
入门托托很容易,所有你需要做的是让toto.TotoServer的新实例,并调用运行()。托托需要一个根模块使用的方法查找。默认情况下,TotoServer会寻找一个模块调用的方法。该method_module参数可用于指定名称的另一个模块。
配置
默认情况下,多多被配置为在端口8888上运行,并连接到本地主机上运行的MongoDB的服务器。配置可以通过三种方式进行,每个覆盖的最后一个:
1.通过传递选项命名参数的构造函数TotoServer。
2.通过通过传递路径的配置文件作为第一个参数到TotoServer构造一个配置文件。
3.用命令行参数(--option =“字符串值”--option = 1234)
调试时相结合的配置方法是有用的。用--help运行脚本,以查看可用参数的完整列表。
方法
方法是按名称在每个请求引用。 A.B.C(或者A / B / C)映射到methods.a.b.c。要添加新的方法,增加模块和包的方法(或指定)包(请参阅帐户包供参考),并确保每个可调用的模块定义调用(处理程序,参数),其中处理器是tornado.web的TotoHandler(子类。 RequestHandler的)处理当前请求。
handler.connection.db提供了直接访问所使用的会话和账目框架数据库。
handler.session提供访问当前会话或无,如果不进行身份验证。可用的属性:
- session.user_id - 当前用户ID
- session.expires - Unix时间戳当会议将到期
- session.session_id - 当前会话ID
- session.state - 包含当前状态的蟒蛇字典,你必须调用session.save_state()坚持任何改变
要强制认证的任何方法,装饰用@ toto.invocation.authenticated的调用()函数。未经授权擅自调用验证方法会返回一个未授权的错误。
所需的参数可以通过装饰一个invoke()函数@ toto.invocation.requires指定(参数1,参数2,...)。
方法模块可以通过装饰一个invoke()函数@ toto.invocation.asynchronous利用旋风的非阻塞功能。当异步操作完成后,你必须调用handler.finish()以完成该请求。数据可以被发送到客户端用handler.write()和handler.flush()。可选模块可以实现on_connection_close()来清理任何资源,如果客户端关闭连接。见RequestHandler.on_connection_close()的龙卷风文档中获取更多信息。
重要的是要记住,龙卷风要求所有调用写(),刷新()和完成()在主线程上执行是非常重要的。你可以安排一个函数来主线程与IOLoop.instance()。add_callback(回调)上运行。
注意:从调用返回的任何数据到method.invoke()将被发送到客户端为JSON数据和用来产生进行验证的x TOTO-HMAC头。这可能会导致异步方法的问题。如果method.invoke()返回无,一个响应将不会自动发送给客户机并没有任何的x TOTO-HMAC头将生成。
要求
未经身份验证的方法:
1.拨打服务与形式JSON对象:{“法”:“ABC”,“参数”:<参数>}。而不是传递了“方法”的说法在请求主体的,但也可以调用由网址的方法。等效于上述呼叫URL是http://service.com/service/a/b/c。
2.解析响应JSON。
帐户创建:
1.呼叫account.create方法{“user_ID的”:
2.确认base64编码响应主体的HMAC-SHA1与
3.解析响应JSON。
4.读取和存储从响应对象SESSION_ID。
登录:
1.呼叫account.login方法{“user_ID的”:
2.确认base64编码响应主体的HMAC-SHA1与
3.解析响应JSON。
4.读取和存储从响应对象SESSION_ID。
经过身份验证的方法:
1.登录(见-以上)。
2.呼叫服务,形式JSON对象:{“法”:“ABC”,“参数”:<参数>}与x TOTO-会话ID头设置会话ID从登录和x轴返回TOTO-HMAC头设置为base64编码HMAC-SHA1与
3.验证base64编码响应主体的HMAC-SHA1与
4.解析响应JSON。
注意:这说明假设method.invoke()返回一个对象被序列化和发送到客户端。返回无方法可以用于发送任何数据,必须进行相应的处理。
活动
有时你可能需要从一个请求到另一个发送事件。托托的toto.events.EventManager使这个容易。
发送事件使用EventManager.instance()。发('eventname已',参数)。放到EventManager采用序列化Python的的cPickle模块,使您可以通过任何的cPickle可以处理的args。
要接收事件,您必须注册EventManager.instance()处理程序。register_handler('eventname已',处理程序)。处理程序是一个函数,它有一个参数,将调用的args当放到EventManager发送事件'eventname已“。托托的事件进行了初步设计与非阻塞请求龙卷风的支持相结合。看到“聊天”模板的一个例子。
托托的事件系统支持发送在多个实例都在同一台机器上,并在分布式系统中的事件。运行服务器--help更多的配置选项
系统守护进程
该托托服务器可以通过传递参数--daemon =启动运行的守护进程。停止任何正在运行的进程传递--daemon =停止。这将停止共享指定PID的文件格式(默认toto.pid)的任何进程。所述--processes =选项可以用于指定服务器的实例数来运行。多个实例将在开始由--port指定的端口连续的端口上运行。如果0被用作参数--processes,多多将Python的多模块检测到每个CPU上运行一个进程。附加系统守护进程选项可以从--help查看。
客户端
为了帮助您开始,JavaScript和iOS的客户端库正在开发中的https://github.com/JeremyOT/TotoClient-JS和https://github.com/JeremyOT/TotoClient-iOS分别。
特点:
- 在任何平台使用JSON,方便消费的客户
- 在轻松添加新的方法
- 在建与HMAC-SHA1校验用于身份验证的要求简单验证
- 在会话状态持续性认证的请求
- 在存储在数据库中的会话,以简化跨服务器扩展
要求:
- 在Python中
评论没有发现