请问怎么在ubuntu11.04中安装python2.4并且默认使用?
时间:2011-07-08
来源:互联网
以前我用的是个 cx_freeze 的,提取了其中的 pyc 文件,改下端口号,一切良好。谁知换了 Arch 才知道,pyc 文件要求指定版本的 python。于是不得不手动编译安装了 py2.6,郁闷啊。。最近又对异步编程比较有兴趣,于是有了这个脚本。端口号是 8083,要改就自己改吧。还有,只能把 *.ubuntu.org.cn 的请求给它。用 囗囗囗囗囗囗囗/foxproxy/etc 吧。
https://github.com/lilydjwg/winterpy/bl ... ubuntu3.py
https://github.com/lilydjwg/winterpy/bl ... ubuntu3.py
代码: [ 下载 ] [ 隐藏 ]
使用 python 语法高亮
#!/usr/bin/env python3
# vim:fileencoding=utf-8
'''
Ubuntu 中文论坛加速脚本
依原 cx_freeze 的 py2.6 版重写
'''
import socket
import zlib
import tornado.ioloop
import tornado.web
import tornado.iostream
import tornado.httpclient
class MainHandler(tornado.web.RequestHandler):
@tornado.web.asynchronous
def get(self):
self.handle_requset()
@tornado.web.asynchronous
def post(self):
self.handle_requset()
def handle_requset(self):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
rcon = tornado.iostream.IOStream(s)
self.rcon = rcon
rcon.connect(('cdn.ubuntu.org.cn', 8111), self.send_request)
def send_request(self):
req = self.request
uri = req.uri[req.uri.find('/', 8):]
data = ['%s %s HTTP/1.0' % (req.method, uri)]
req.headers['connection'] = 'close'
for h in req.headers.items():
data.append('{}: {}'.format(*h))
data.append('\r\n')
bdata = '\r\n'.join(data).encode('latin1')
if req.method == 'POST':
bdata += req.body
data = zlib.compress(bdata)
rcon = self.rcon
length = '%d\n' % len(data)
rcon.write(length.encode('ascii'))
rcon.write(data)
self._headers_written = True
rcon.read_bytes(8192, self.on_data)
rcon.set_close_callback(self.on_close)
def on_data(self, data):
self.request.write(data)
if len(data) == 8192:
self.rcon.read_bytes(8192, self.on_data)
else:
self.finish()
def on_close(self):
self.rcon._read_bytes = self.rcon._read_buffer_size
self.rcon._read_from_buffer()
application = tornado.web.Application([
(r"/.*", MainHandler),
])
if __name__ == "__main__":
application.listen(8083)
tornado.ioloop.IOLoop.instance().start()
# vim:fileencoding=utf-8
'''
Ubuntu 中文论坛加速脚本
依原 cx_freeze 的 py2.6 版重写
'''
import socket
import zlib
import tornado.ioloop
import tornado.web
import tornado.iostream
import tornado.httpclient
class MainHandler(tornado.web.RequestHandler):
@tornado.web.asynchronous
def get(self):
self.handle_requset()
@tornado.web.asynchronous
def post(self):
self.handle_requset()
def handle_requset(self):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
rcon = tornado.iostream.IOStream(s)
self.rcon = rcon
rcon.connect(('cdn.ubuntu.org.cn', 8111), self.send_request)
def send_request(self):
req = self.request
uri = req.uri[req.uri.find('/', 8):]
data = ['%s %s HTTP/1.0' % (req.method, uri)]
req.headers['connection'] = 'close'
for h in req.headers.items():
data.append('{}: {}'.format(*h))
data.append('\r\n')
bdata = '\r\n'.join(data).encode('latin1')
if req.method == 'POST':
bdata += req.body
data = zlib.compress(bdata)
rcon = self.rcon
length = '%d\n' % len(data)
rcon.write(length.encode('ascii'))
rcon.write(data)
self._headers_written = True
rcon.read_bytes(8192, self.on_data)
rcon.set_close_callback(self.on_close)
def on_data(self, data):
self.request.write(data)
if len(data) == 8192:
self.rcon.read_bytes(8192, self.on_data)
else:
self.finish()
def on_close(self):
self.rcon._read_bytes = self.rcon._read_buffer_size
self.rcon._read_from_buffer()
application = tornado.web.Application([
(r"/.*", MainHandler),
])
if __name__ == "__main__":
application.listen(8083)
tornado.ioloop.IOLoop.instance().start()
格式化 0.025 秒, 使用 GeSHi 1.0.8.4
作者: lilydjwg 发布时间: 2011-07-08
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28