Python的win32serviceutil之疑似BUG

简介:

郑昀@玩聚SR 20090515

1、现象:

用Python的win32serviceutil控制Windows Service启动、停止、重启时,如下代码一般是没问题的。

import win32serviceutil

def service_manager(action, machine, service):
    if action == 'stop':
        win32serviceutil.StopService(service, machine)
    elif action == 'start':
        win32serviceutil.StartService(service, machine)
    elif action == 'restart':
        win32serviceutil.RestartService(service, machine)
    elif action == 'status':
        if win32serviceutil.QueryServiceStatus(service, machine)[1] == 4:
            print "%s is happy" % service
        else:
            print "%s is being a PITA" % service

但控制Apache Service时,会出现一个很怪的现象。

譬如运行这么简单的语句:

import win32serviceutil

win32serviceutil.StartService("Apache2.2","localhost")

顺利执行后,停止的Apache服务并没有被启动。
此时,Windows事件日志就会报告这种错误:
事件类型:    错误
事件来源:    Apache Service
事件种类:    无
事件 ID:    3299
The Apache service named  reported the following error:
>>> Usage: C:""Apache2.2""bin""httpd.exe [-D name] [-d directory] [-f file]

 

同样,win32serviceutil.RestartService 函数虽然可以先正常地停止掉Apache服务,但试图启动时仍遇到同样的错误。

在多台服务器(Windows2003+SP2)和我本机(WindowsXP+SP2)都可以重现。


2、解决:

 

把machine参数去掉不传即可,或传空字符串。 
即: 
win32serviceutil.StartService("Apache2.2") 

win32serviceutil.StartService("Apache2.2","")

可以正常启动本机的Apache,这样无法遥控域内其他服务器了。

 


3、更多:
1:win32serviceutil.StartService(service, '-w -n "Apache2.2" -k start')
这样不传machine参数,只设定服务启动的传入参数也不行。

2:对于 win32serviceutil.StopService 函数,停止Apache等Windows服务时,不存在此问题。

目录
相关文章
|
数据采集 编解码 JSON
【Python】bug汇总
【Python】bug汇总
621 0
|
Python
0.1+0.2≠0.3,揭秘Python自带的Bug
0.1+0.2≠0.3,揭秘Python自带的Bug
301 0
0.1+0.2≠0.3,揭秘Python自带的Bug
|
3月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
335 1
|
测试技术 API 数据安全/隐私保护
Python连接到Jira实例、登录、查询、修改和创建bug
通过使用Python和Jira的REST API,可以方便地连接到Jira实例并进行各种操作,包括查询、修改和创建Bug。`jira`库提供了简洁的接口,使得这些操作变得简单易行。无论是自动化测试还是开发工作流的集成,这些方法都可以极大地提高效率和准确性。希望通过本文的介绍,您能够更好地理解和应用这些技术。
1149 0
|
监控 程序员 持续交付
`pylint`是一个高度可配置的Python代码分析工具,它可以帮助程序员查找代码中的错误、样式问题、可能的bug以及不符合编码标准的部分。
`pylint`是一个高度可配置的Python代码分析工具,它可以帮助程序员查找代码中的错误、样式问题、可能的bug以及不符合编码标准的部分。
|
Python
python 自带 re bug 推荐使用 regex
python 自带 re bug 推荐使用 regex
162 0
|
Cloud Native Go 开发者
那些年,我们一起追过的Python BUG
那些年,我们一起追过的Python BUG
173 0
|
人工智能 IDE 开发工具
走近Python编程的“BUG”世界
走近Python编程的“BUG”世界
196 0
|
Python
Python Bug分类,及异常处理
Python Bug分类,及异常处理
138 0

推荐镜像

更多