如果我们将Python脚本作为win32服务运行,则URLLib2 urlopen不起作用(Windows服务)

时间:2016-02-16 07:26:28

标签: python-2.7 urllib2 pywin32

我有网址:" http://google.com",如果我从命令提示符运行Python脚本,那么我们将得到预期的结果。但是如果我们运行与win32服务相同的代码,那么我们会收到以下错误

urlopen错误[Errno 10060]连接尝试失败,因为连接方在一段时间后没有正确响应,或者由于连接主机无法响应而建立连接失败

代码段:

class MyService(win32serviceutil.ServiceFramework):
    """NT Service."""

    _svc_name_ = "InstaMessageSyncService"
    _svc_display_name_ = "InstaMessageSyncService"

    def __init__(self, args):
        win32serviceutil.ServiceFramework.__init__(self, args)
        # create an event that SvcDoRun can wait on and SvcStop
        # can set.
        self.stop_event = win32event.CreateEvent(None, 0, 0, None)

    def SvcDoRun(self):
        global runProcess
        try:
            import urllib2
            link = "http://www.google.com"
            log.info("Going to hit URL: %s",link)
            f = urllib2.urlopen(link)
            myfile = f.read()
        except Exception,e:
            log.info("Exception: %s",e)
        win32event.WaitForSingleObject(self.stop_event, win32event.INFINITE)

    def SvcStop(self):
        runProcess = False
        self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
        win32event.SetEvent(self.stop_event)


if __name__ == '__main__':
    win32serviceutil.HandleCommandLine(MyService)

1 个答案:

答案 0 :(得分:0)

看起来你的防火墙正在采取行动。 尝试关闭防火墙,如果它有帮助,那么你应该通过允许端口或服务(通过其名称)关闭此服务。

有关详细信息,请参阅microsoft帮助页面: https://technet.microsoft.com/en-us/library/cc757622(v=ws.10).aspx