使用 Twisted 框架进行网络编程,第 2 部分
2008-11-13 13:14:25 来源:WEB开发网使用 Twisted 来更新静态页面
在我的第一篇 Twisted 文章中所提出的定时回调技术可以用来定期更新上面所讨论的 Weblog.html 文件。也就是说,您可以用非阻塞 twisted.internet.reactor.callLater() 调用来替换 logmaker.py 中的 time.sleep() 调用:
清单 3. tlogmaker.py Weblog 刷新器脚本
from webloglib import log_fields, TOP, ROW, END, COLOR
import webloglib as wll
from urllib import unquote_plus as uqp
import os, twisted.internet
LOG = open('../access-log')
RECS = []
PAGE = 'www/weblog.html'
def update():
global RECS
page = open(PAGE+'.tmp','w')
RECS.extend(LOG.readlines())
RECS = RECS[-35:]
print >> page, TOP
odd = 0
for rec in RECS:
hit = [field.strip('"') for field in log_fields(rec)]
if hit[wll.status]=='200' and hit[wll.referrer]!='-':
resource = hit[wll.request].split()[1]
referrer = uqp(hit[wll.referrer]).replace('&',' &')
print >> page, ROW % (COLOR[odd], referrer, resource)
odd = not odd
print >> page, END
page.close()
os.rename(PAGE+'.tmp',PAGE)
twisted.internet.reactor.callLater(5, update)
update()
twisted.internet.reactor.run()
更多精彩
赞助商链接