类别:python / 日期:2016-10-13 / 浏览:2276 / 评论:0

1、Handler路由设置别名,方便页面中使用

handlers = [
    URL(r'/', .MainHandler, name='main'),
    URL(r'/physical', .PhysicalHandler, name='physical'),
    URL(r'/virtual', .VirtualHandler, name='virtual')]

页面中的使用:<a href="{{ reverse_url('main') }}">链接</a>

2、禁用日志输出

logging.getLogger('tornado.access').disabled = True

3、页面返回对象json格式数据

对象:json.dumps(return_obj, default=lambda obj: obj.__dict__)
列表:json.dumps([o.obj_dict() for o in return_return], ensure_ascii=False)
对于列表中的对象,必须自己实现一个方法(obj_dict()),方法中直接返回self.__dict__即可。如果有中文,需要加上ensure_ascii=False

4、简单异步处理

ioloop.IOLoop.instance().add_callback(方法, [参数,])
self.write("success")

这样会直接返回,对于方法的执行会在下一次的循环中。

5、生成随机MAC地址

"52:54:00:" + ':'.join(['%02x' % x for x in map(lambda x: randint(0, 255), range(3))])

6、简单并行计算

基本: 

pool = ThreadPool(10)
pool.map(方法, 参数)

加入超时时间: 

pool = Pool(processes=10)
processes = [pool.apply_async(方法, [i]) for i in 参数]
    for process in processes:
        process.get(timeout=180)

7、非阻塞方法的使用

创建执行方法的类:

class TaskService(object):
    def __init__(self):
        self.executor = ThreadPoolExecutor(max_workers=10)
        self.io_loop = ioloop.IOLoop.current()
    def run(self):
        pass
        return obj

handler中调用方法:

class TaskHandler(tornado.web.RequestHandler):
    @tornado.gen.coroutine
    def get(self):
        task_service = TaskService()
        result = yield task_service.run()
        pass

可能感兴趣的文章

评论区

发表评论 /

必填

选填

选填

◎欢迎讨论,请在这里发表您的看法及观点。