twisted.http 异步访问站点

#coding=utf8

from twisted.internet import reactor
from twisted.internet.task import deferLater
from twisted.web.server import Site, NOT_DONE_YET
from twisted.web.resource import Resource
import time,sys

DELAY = 10

#同步执行
class WebRootResource(Resource):
	isLeaf = True

	def render_GET(self, request):
		time.sleep(DELAY)
		return '<html>Current Time:%s</html>' % time.asctime()

#异步执行
class AsyWebRootResource(Resource):
	isLeaf = True

	def render_laterCall(self, request):
		#要特别注意异步的时候,不能再return '<html>....'
		#只能通过request.write() request.finish()来完成异步执行操作。
		#return '<html>Current Time:%s</html>' % time.asctime()
		request.write('Finally done Time:%s' % time.asctime())
		request.finish()

	def render_GET(self, request):
		#首先调用lambda:request,返回request作为下次调用参数
		#去延迟调用render_latercall,将request作为参数
		d = deferLater(reactor, DELAY, lambda: request)
		d.addCallback(self.render_laterCall)

		return NOT_DONE_YET

if __name__ == '__main__':
	reload(sys)
	sys.setdefaultencoding('utf8')
	reactor.listenTCP(8000, Site(WebRootResource()))
	#reactor.listenTCP(8000, Site(AsyWebRootResource()))
	reactor.run()


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值