类别: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
发表评论 /