当前第2页 返回上一页
为什么RequestHandler中post或者get请求被认为是一个后台的线程方法?这个问题从使用tornado的代码中可以窥得一二。代码如下:
1 2 3 4 5 6 7 8 | if __name__ = = '__main__' :
app = tornado.web.Application(
handlers = [(r "/test/(\w+)" , testHandler),
(r '/' , MainHandler)]
)
server = tornado.httpserver.HTTPServer(app)
server = server.listen( 8848 )
tornado.ioloop.IOLoop.instance().start();
|
在给tornado配置了路由规则之后,我们开启了httpserver的服务,最后创建进程来使tornado运行起来。而每次的post或者get请求则是通过路由调用相应的Handler,这些都是在线程中执行的。故案例中通过com组件WMI来获取系统流量放在get方法中就会报错。修改后如下:
1 2 3 4 5 6 7 8 9 10 | def get( self ):
res = {} pythoncom.CoInitialize()
c = wmi.WMI()
interfaces = c.Win32_PerfRawData_Tcpip_NetworkInterface() print len (interfaces)
rec = send = 0.0 for t in interfaces: print t.Name
rec + = float (t.BytesReceivedPersec) / 1024 / 1024
send + = float (t.BytesSentPersec) / 1024 / 1024 print rec, send
res[ "receive" ] = "%.2f" % rec
res[ "send" ] = "%.2f" % send
self ._write_json(res)
|
模块中很有很多类型(类型也有很多属性),在具体使用的过程中查询起来很痛苦。案例中的统计流量用的是Win32_PerfRawData_Tcpip_NetworkInterface ,也有解决方案用的是Win32_PerfRawData_Tcpip_TCPv4 两个统计到的数据差别很大,请根据实际情况来选择。
以上就是关于python方法无法在线程中使用的解决办法的详细内容,更多文章请关注木庄网络博客!!
返回前面的内容
相关阅读 >>
Python大神用的9个实用技巧分享给你
Python解析json的实例分享
如何使用不同分隔符切分字符串
在电脑上怎么下载Python
Python中的对象属性如何访问?两种方法实例解析
Python线程优先级队列是什么?线程优先级的设置方法有哪些?
Python是一种面向什么的高级语言
介绍Python中星号变量的特殊用法
Python实现循环定时器的方法介绍(附代码)
Python能做嵌入式吗
更多相关阅读请进入《Python》频道 >>
人民邮电出版社
python入门书籍,非常畅销,超高好评,python官方公认好书。
转载请注明出处:木庄网络博客 » 关于python方法无法在线程中使用的解决办法