我写了一段代码,使我的程序成为windows服务,但当我用命令python name_file.py install
启动我的程序时,它只是打开控制台和所有。但是当我将我的程序转换为exe
文件并使用CMD创建服务时sc create JUSTBOT binpath="first path to name_file.exe second path\name_file.py" DisplayName="JUSTBOT" start=delayed-auto
。它创建了一个服务,It服务正在工作,但我无法启动It服务,它已经写了error 1053
。请任何人帮帮我。我使用Python 3.7
import win32serviceutil
import win32service
import win32event
import servicemanager
import socket
import listTT
from time import sleep
import telebot
import sys
class AppServerSvc (win32serviceutil.ServiceFramework):
_svc_name_ = "JUSTBOT"
_svc_display_name_ = "JUSTBOT"
def __init__(self,args):
win32serviceutil.ServiceFramework.__init__(self,args)
self.hWaitStop = win32event.CreateEvent(None,0,0,None)
#socket.setdefaulttimeout(15)
def SvcStop(self):
self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
win32event.SetEvent(self.hWaitStop)
def SvcRestart(self):
if servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE,
servicemanager.PYS_SERVICE_STARTED,
(self._svc_name_,'')):
win32serviceutil.RestartService(self._svc_name_)
self.main()
#def SvcDoRun(self):
# servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE,
# servicemanager.PYS_SERVICE_STARTED,
# (self._svc_name_,''))
# self.main()
def main(self):
while True:
try:
listTT.bot.polling(none_stop=True, interval=2, timeout=2)
listTT.bot.infinity_polling(True)
except Exception:
pass
except AttributeError:
pass
except ReferenceError:
pass
except telebot.apihelper.requests.exceptions.ConnectionError:
pass
except ConnectionAbortedError:
pass
except ConnectionRefusedError:
pass
except ConnectionResetError:
pass
except RuntimeError:
pass
except telebot.apihelper.requests.exceptions.ConnectTimeout:
pass
except IndexError:
pass
except telebot.apihelper.requests.exceptions.ReadTimeout:
pass
except telebot.apihelper.requests.exceptions.RetryError:
pass
except telebot.apihelper.requests.exceptions.Timeout:
pass
except telebot.apihelper.requests.exceptions.HTTPError:
pass
except RecursionError:
pass
finally:
sleep(6)
if __name__ == '__main__':
if len(sys.argv) == 1:
servicemanager.Initialize()
servicemanager.PrepareToHostSingle(AppServerSvc)
servicemanager.StartServiceCtrlDispatcher()
else:
win32serviceutil.HandleCommandLine(AppServerSvc)
目前没有回答
相关问题 更多 >
编程相关推荐