win32serviceutil.ServiceFramework
次のようなものに基づいて作成した Service があるとします。
class Launcher(win32serviceutil.ServiceFramework):
_svc_name_ = "QueueFolders"
_svc_display_name_ = "Queue Hot Folders"
def __init__(self, args):
win32serviceutil.ServiceFramework.__init__(self, args)
self.hWaitStop = win32event.CreateEvent(None, 0, 0, None)
def SvcStop(self):
sys.stopservice = True
def SvcDoRun(self):
# A call to something Main() like here.
QueueFolders()
この例では、呼び出しQueueFolders
によって、適切な構成が行われている場合に長時間実行されるオブジェクトがインスタンス化されます。そうでない場合は、例外が発生し、コマンド プロンプトに次のように表示されます。
j:\EclipseWorkspace\Queue Folders\dist>net start queuefolders
The Queue Hot Folders service is starting.
The Queue Hot Folders service could not be started.
The service did not report an error.
More help is available by typing NET HELPMSG 3534.
このエラーをどのように報告すればよいのでしょうか。インスタンス化できることはわかってtry / catch
いますが、試してみましたが、self.ReportServiceStatus(win32service.SERVICE_ERROR_CRITICAL)
意味のあるものをユーザーに報告できないようです (理想的には、「サービスを開始できませんでした。構成を確認してください。」