私のコードからPythonサービス.exeを作成しようとしています。 私はそれを実行に固執しました。Pythonサービスがエラー1053で失敗しますが、デバッグモードで動作します
私は2つの重要なファイルがあります。サービスコード:
import win32serviceutil
import win32service
import win32event
import servicemanager
import socket
import time
from mailbox.fetcher import main_fetching
from disc.my_logger import set_up_logging
logging = set_up_logging("Fetcher")
class FetcherSvc (win32serviceutil.ServiceFramework):
_svc_name_ = "MailMan-FetchingService"
_svc_display_name_ = "MailMan FetchingService"
def __init__(self,args):
win32serviceutil.ServiceFramework.__init__(self,args)
self.stop_event = win32event.CreateEvent(None,0,0,None)
socket.setdefaulttimeout(60)
self.stop_requested = False
def SvcStop(self):
self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
win32event.SetEvent(self.stop_event)
logging.info('Stopping fetching ...')
self.stop_requested = True
def SvcDoRun(self):
self.ReportServiceStatus(win32service.SERVICE_START_PENDING)
servicemanager.LogMsg(
servicemanager.EVENTLOG_INFORMATION_TYPE,
servicemanager.PYS_SERVICE_STARTED,
(self._svc_name_,'')
)
self.main()
def main(self):
logging.info(' ** Starting fetching mails service ** ')
self.ReportServiceStatus(win32service.SERVICE_RUNNING)
while not self.stop_requested:
main_fetching()
py2exeセットアップコード:
setup(console=[{"script": "fetching_service.py",
"icon_resources": [(1, "../mailman.ico")],
"dest_base": "fetching_service"}],
data_files=[('', ['../cacert.pem', '../trusted-certs.crt'])],
options={"py2exe": {
"includes": ["win32serviceutil", "win32service", "win32event"],
'bundle_files': 0, "optimize": 2,
'dist_dir': 'fetcher_service'}})
サービスが正しくインストールされます。
$ fetcher_service/fetching_service.exe --startup=delayed install
Installing service MailMan-FetchingService
Changing service configuration
Service updated
しかし出発の:
を$ fetcher_service/fetching_service.exe start
Starting service MailMan-FetchingService
Error starting service: Usługa nie odpowiada na sygnał uruchomienia lub sygnał sterujący w oczekiwanym czasie.
(サービスは開始または制御要求に適時に応答しませんでした) 特定のユーザーを設定しようとしましたが、それは役に立たなかった... さらに、実行後にエラーが発生する、遅れはありません
サービスは完全にデバッグモードで動作します。
Unfortunatelly:それは役に立たなかった...上記のコードにあなたの提案を加えました。 –
@osullivjの回答を確認してください。それは私のために働いた。 –