在长期运行的进程中动态重新装入模块
2007-03-29 11:58:20 来源:WEB开发网核心提示: 要运行这个脚本,只要执行如下操作:python fetch_txt2html.py http://gnosis.cx/publish/programming/charming_python_7.txt这并没有向您提供本地 Txt2Html 处理的全部开关,在长期运行的进程中动态重新装入模块
要运行这个脚本,只要执行如下操作:
python fetch_txt2html.py http://gnosis.cx/publish/programming/charming_python_7.txt
这并没有向您提供本地 Txt2Html 处理的全部开关,但如有必要,添加它们也很容易。可以像使用任何命令行工具一样来输送和重定向输出。但是,在上述版本中,只能处理 URL 可以到达的数据文件,而不能处理本地文件。
实际上, fetch_txt2html.py 可以完成 lynx 不能完成的任务(Txt2Html 本身也不能):它不仅从 URL 取得数据源,而且还远程获取 程序逻辑 。如果使用 fetch_txt2html.py ,就 不必在本地机器上安装 Txt2Html;将(使用最新版本)远程调用处理,并且将把结果发送回来,就像运行的是本地进程。很棒吧?Txt2Html 的本地版本可以访问远程 URL,就像访问本地文件一样,但它还不能保证它自身是最新的……!
动态初始化
使用 fetch_txt2html.py 确保了在转换中始终使用最新的程序逻辑。但是,这个方法可以完成的另一件事情是将处理器(和内存)的需求转移给 gnosis.cx Web 服务器。此特殊进程的负载并不是特别高,但人们却很可能认为在客户机上处理的其它类型的进程会更有效且令人满意。
组织 Txt2Html 的方式 -- 也就是组织大多数程序的方式 -- 是用一些由各种实用函数提供的核心流量控制函数。尤其是这些实用函数是一些经常更新的函数;核心函数( main() 和一些其它函数)只有在做重大改写时才会变动。总而言之,在每个程序运行时有效更新的就是实用函数。其实,大部分情况下,主 Txt2Html 模块 dmTxt2Html 中的大多数函数就够了。
'd2h_textfuncs.py' 动态 Txt2Html 更新
"""Hot-pluggable replacement functions for Txt2Html"""
#-- Functions to massage blocks by type
#def
Titleify(block):
#def Authorify(block):
# ... [more block massaging functions] ...
#-- Utility functions for text transformation
#def AdjustCaps(txt):
#def capwords(txt):
#def URLify(txt):
def
Typographify
(txt):
# [module] names
r = re.compile(r
""'([(s'/">]|^)[(.*?)]([<s.),:;'"?!/-])""" , re.M | re.S)
txt = r.sub(
'\1<em><code>\2</code></em>\3' ,txt)
# *strongly emphasize* words
r = re.compile(r
""'([(s'/"]|^)*(.*?)*([s.),:;'"?!/-])""" , re.M | re.S)
txt = r.sub(
'\1<strong>\2</strong>\3' , txt)
# ... [more text massaging] ...
return
txt
# ... [more text transformation functions] .....
更多精彩
赞助商链接