当前第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中paramiko模块实现远程控制以及传输的示例
Python编程需要什么软件
Python遍历文件夹下所有文件
Python螺旋线怎么画
传授 每30秒学会一个Python小技巧
Python实现删除时保留特定文件夹和文件的示例
Python图形界面开发用什么
Python操作mysql代码总结
介绍Python爬取哔哩哔哩视频
Python怎么打开
更多相关阅读请进入《Python》频道 >>
人民邮电出版社
python入门书籍,非常畅销,超高好评,python官方公认好书。
转载请注明出处:木庄网络博客 » 关于python方法无法在线程中使用的解决办法