您好,登錄后才能下訂單哦!
這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)如何以Windows Service的方式運(yùn)行Python程序,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
Python程序代碼
importwmi importos c=wmi.WMI() watcher=c.Win32_PowerManagementEvent.watch_for(EventType=7)#監(jiān)視待機(jī)事件的語(yǔ)句; whileTrue: os.system("kdlj.vbs")#運(yùn)行“連接寬帶“的程序,這里還是用了上次那位仁兄的vbs代碼; watcher()
由于運(yùn)行時(shí)Python程序的控制臺(tái)窗口一直在那兒,看著有點(diǎn)礙事兒。于是乎想到要是能把他以windowsservice的方式運(yùn)行,就像其他在windows服務(wù)管理器里的程序一樣。
最終,在"PythonProgrammingOnWin32"(byMarkHammond)這本書(shū)里找到了相關(guān)介紹,它里
面有一個(gè)簡(jiǎn)單的模版,把Python程序代碼放入相應(yīng)位置就可以了:
#SmallestService.py
#
#AsampledemonstratingthesmallestpossibleservicewritteninPython.
importwin32serviceutil
importwin32service
importwin32event
classSmallestPythonService(win32serviceutil.ServiceFramework):
_svc_name_="SmallestPythonService"
_svc_display_name_="ThesmallestpossiblePythonService"
def__init__(self,args):
win32serviceutil.ServiceFramework.__init__(self,args)
#Createaneventwhichwewillusetowaiton.
#The"servicestop"requestwillsetthisevent.
self.hWaitStop=win32event.CreateEvent(None,0,0,None)
defSvcStop(self):
#Beforewedoanything,telltheSCMwearestartingthestopprocess.
self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
#Andsetmyevent.
win32event.SetEvent(self.hWaitStop)
defSvcDoRun(self):
#把你的程序代碼放到這里就OK了
win32event.WaitForSingleObject(self.hWaitStop,win32event.INFINITE)if__name__=='__main__':
win32serviceutil.HandleCommandLine(SmallestPythonService)
#括號(hào)里的名字可以改成其他的,必須與class名字一致;
接下來(lái),只要安裝一下服務(wù),cmd下運(yùn)行:SmallestService.pyinstall就行了。
這樣,你就可以在windows服務(wù)管理器里找到一個(gè)名叫"ThesmallestpossiblePythonService"的服務(wù)了,設(shè)成自動(dòng)啟動(dòng),就會(huì)開(kāi)機(jī)自動(dòng)啟動(dòng)并且一直在后臺(tái)運(yùn)行了。(眼不見(jiàn)心不煩,)
不過(guò),這樣雖然達(dá)到目的了,但還是發(fā)現(xiàn)個(gè)小問(wèn)題,就是要是想停止該服務(wù),關(guān)閉的進(jìn)度條就愣在那里不動(dòng)了,必須在進(jìn)程管理器里把pythonservice.exe關(guān)掉才行,這個(gè)bug一直沒(méi)法解決,就是關(guān)閉服務(wù)的同時(shí),要把監(jiān)視待機(jī)事件取消,否則退不出這個(gè)死循環(huán)。
上述就是小編為大家分享的如何以Windows Service的方式運(yùn)行Python程序了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。