我需要一些关于 python 服务的帮助。
我有一个用 Python 编写的服务。我需要做的是传递一些参数。让我举个例子来更好地解释它。
假设我有一项服务,它除了向日志中写入内容外什么都不做。我想多次将相同的内容写入日志,所以我使用了循环。我想在启动服务时为循环传递计数器,但我不知道如何。我开始服务:
win32serviceutil.HandleCommandLine(WinService)
我正在寻找类似的东西
win32serviceutil.HandleCommandLine(WinService,10)
我真的不在乎它是如何完成的,只要我能向它传递参数即可。一直在努力使它在一天中的大部分时间都能正常工作,但没有运气。此外,该服务不是直接运行的,而是导入的,然后从那里运行。
编辑:
这是一个例子,希望它能澄清一些问题。
这是在 WindowsService.py 中:
import win32serviceutil, win32service, win32event, servicemanager, win32serviceutil
class LoopService(win32serviceutil.ServiceFramework):
_svc_name_ = "LoopService"
_svc_description_ = "LoopService"
_svc_display_name_ = "LoopService"
def __init__(self,args):
win32serviceutil.ServiceFramework.__init__(self,args)
self.hWaitStop = win32event.CreateEvent(None,0,0,None)
def SvcStop(self):
self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING);
win32event.SetEvent(self.hWaitStop);
def SvcDoRun(self):
i = 0;
while i < 5:
servicemanager.LogInfoMsg("just something to put in the log");
i += 1
win32event.WaitForSingleObject(self.hWaitStop, win32event.INFINITE)
这是在主脚本中:
import service.WindowsService, win32serviceutil
win32serviceutil.HandleCommandLine(service.WindowsService.LoopService);
就像现在一样,循环将执行固定次数。我想要的是以某种方式简单地将值发送给服务。真的不在乎如何。
最佳答案
我认为您不能将参数直接传递给服务。您可能可以使用环境(在启动服务之前设置环境变量并从服务中读取它)。
关于python - 将参数传递给 python 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3000476/