我需要一些关于python服务的帮助。在
我有一个用Python编写的服务。我需要做的是给它一些论点。让我举个例子来解释一下。在
假设我有一个服务,它什么都不做,只在日志中写一些东西。我想在日志中多次写入相同的内容,所以我使用循环。我想在我启动服务时传递循环计数器,但我不知道如何操作。我开始服务时:
win32serviceutil.HandleCommandLine(WinService)
我在找类似的东西
^{pr2}$我真的不在乎它是怎么做的,只要我能把论点传给它。我一直在努力让这件事在一天中的大部分时间都没有成功。此外,服务不是直接运行的,而是导入然后从那里运行的。在
编辑:
希望这是一个很好的例子。在
这个在里面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);
现在,循环将执行固定的次数。我只想简单地把价值传递给服务。不在乎怎么做。在
我认为你不能直接把争论传递给服务部门。您可能可以使用环境(在启动服务之前设置环境变量并从服务中读取)。在
抱歉,没有足够的信息回答您的问题。这似乎是一个特定于应用程序的事情。在
我唯一能想到的就是回顾一下win32的代码serviceutil.HandleCommandLine方法和WinService类来确定哪个写入日志。然后,您必须创建一个子类并重写负责写入日志的方法以接收附加参数。最后,您必须尝试从原始类到新类的所有引用。在
在问题编辑后补充道。在
更清楚,但仍然不够。你需要回顾一下win32serviceutil.HandleCommandLine看看它是如何调用的服务.WindowsService.LoopService。初始化。特别是,如何HandleCommandLine生成参数以及如何控制它。在
如果您很着急,您可以:
然后你可以控制重复改变的次数循环服务.重复在创建新实例之前。在
^{pr2}$这很管用,但很难看。尝试控制参数,然后设置自我重复相应地。在
相关问题 更多 >
编程相关推荐