On Fri, Aug 28, 2009 at 7:49 PM, 陶艺夫 <artman...@gmail.com> wrote:
> Hi, > I copied the code from: > http://twistedmatrix.com/pipermail/twisted-python/2007-May/015377.html and > it ran ok. > And then I followed David's advice from here: > http://twistedmatrix.com/pipermail/twisted-python/2007-May/015383.html to > use threading.Event to control server's stop, it ran ok too. But David's > boot_service.py just could install the service, error on start (error 1063). > Any help? > One more question, who can fill in David's 'py2exe' setup file more codes > to guide me moving to next step? David, are you there? :) > > Thanks. > 看你的名字,我认为我写中文你应该能看懂。 我给你段可以通用的代码吧。 首先,是一个你要编译成ntservice的模块的文件。似设abcservice.py ,内容如下 #coding=utf-8 import win32serviceutil import os import sys import win32api sys.path = sys.path + [os.path.dirname(win32api.GetModuleFileName(0))] import server class PowerService(win32serviceutil.ServiceFramework): _svc_name_ = "Your Service Name" _svc_display_name_ = "Your Service Display Name" _svc_description_ = unicode(""" 这里可以写多行的中文。 也可以写 作者:你的名字。 因为文件是utf-8的,在这里,要把中文转成gb2312,才能在windows里正常显示. """,'utf-8').encode('gb2312') def SvcDoRun(self): server.start() def SvcStop(self): server.stop() if __name__ == '__main__': win32serviceutil.HandleCommandLine(PowerService) 用把这个程序打包成.exe以后,它就是一个可以通用的启动服务的程序了。 你的不同程序,只要在同一目录下,修改你的server.py文件,就可以了。 下面举例一个server.py #coding=utf-8 from twisted.internet import reactor def start(): reactor.run(installSignalHandlers=0) def stop(): reactor.callFromThread(reactor.stop) 下面是py2exe打包用的setup.py文件内容 rom distutils.core import setup import py2exe import sys setup(name='service name', version='1.0', author='your name', service=['abcservice']) print "---Done---" 然后用python setup.py py2exe命令打包。 打包好以后,就可以直接发布了。 如果缺什么模块,直接复到到abcservice.exe文件所有目录就行。 如果你的程序修改什么,只直接修改好代码,放在目录下就行。修改程序不用重新py2exe打包。 * *
_______________________________________________ Twisted-Python mailing list Twisted-Python@twistedmatrix.com http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python