ancient.view --- 视图模块

example

class ancient.view.example.AdminHandler(application, request, **kwargs)[源代码]

基类:ancient.handlers.baseHandler.BaseHandler

用render注意static_url函数无法使用被madtornado禁用了,由于tornado静态的处理不是很优美, 所以内部重新实现了静态处理,如果实在需求static_url可以在custom/uiMethod.py中自行实现

碎碎念:

想要做到高并发,一定不要写成同步代码,单线程是由程序中的await进行上下文切换的,
每一个路由都是一个协程,而这些协程中仍然可以通过gen.WaitIterator([]),gen.multi([])
等方法进行并发,其中WaitIterator返回时无序的,multi返回是有序的,传递给multi和WaitIterator对象时,
需要使用gen.convert_yielded将coroutine转换成Future对象再进行参数传递,或者直接传递一个包含协程的列表做参数。
如果你想从当前协程中主动弹出可以使用gen.sleep(0),如果程序中存在CPU密集型操作,请使用
await IOLoop.current().run_in_executor(None, blocking_func, args)或者给阻塞函数添加@run_on_executor装饰器

干掉阻塞代码(由于GIL关系,并不会提升太大性能,但是会减少阻塞):

from tornado.concurrent import run_on_executor

import time
import threading
from concurrent.futures import ThreadPoolExecutor

RecpHandler...部分
executor = ThreadPoolExecutor(20)

@run_on_executor
def block_code(self):
    print(threading.current_thread())
    time.sleep(10)
delete()[源代码]
get()[源代码]
post()[源代码]
put()[源代码]
class ancient.view.example.AnimalsHandler(application, request, **kwargs)[源代码]

基类:ancient.handlers.baseHandler.BaseHandler

RESTful风格动物园模型距离,动物实体

# 以对象的方式描写RESTful风格路由,相当于 # /zoos/{动物园ID}/animals # 动物园所有动物 # /zoos/{动物园ID}/animals/{动物ID} # 动物园指定ID的动物

get(zoos, animals)[源代码]
class ancient.view.example.IndexHandler(application, request, **kwargs)[源代码]

基类:ancient.handlers.baseHandler.BaseHandler

CustomErrorHandler是一个举例说明,演示了如何正确的创建自己的自定义错误处理 公共类

delete()[源代码]
get()[源代码]
post()[源代码]
put()[源代码]
class ancient.view.example.ZoosHandler(application, request, **kwargs)[源代码]

基类:ancient.handlers.baseHandler.BaseHandler

RESTful风格动物园模型距离,动物园实体

# 以对象的方式描写RESTful风格路由,相当于 # /zoos # 所有的动物园 # /zoos/{动物园ID} # 指定的动物园

get(zoos)[源代码]