美文网首页我的python学习
Windows service 运行 flask

Windows service 运行 flask

作者: 江南遗风 | 来源:发表于2019-07-21 18:03 被阅读0次

    目前需要在windows构建一个小接口,使用cmd命令行运行服务有一点不方便,然后看网上有没有flask服务化的文章。

    首先使用pywin32可以构建python service

    pip下载 pywin32

    pip install pywin32 
    # 注意事项: 不要在虚拟环境中安装,安装后会缺少某些包
    pip install flask==0.11  # flask 1.0的包未能成功使用Windows service
    
    基本代码win_flask.py
    import win32serviceutil
    import win32service
    import win32event
    import win32evtlogutil
    import servicemanager
    import socket
    import time
    
    import os
    import sys
    sys.path.append(os.path.dirname(__name__))
    
    from myapp import app
    
    
    class HelloFlaskSvc (win32serviceutil.ServiceFramework):
        _svc_name_ = "windows service Flask" # 服务名
        _svc_display_name_ = "windows service Flask" # 描述
        
        def __init__(self, *args):
            win32serviceutil.ServiceFramework.__init__(self, *args)
            self.hWaitStop = win32event.CreateEvent(None,0,0,None)
            socket.setdefaulttimeout(5)
            self.stop_requested = False
    
        def SvcStop(self):
            self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
            win32event.SetEvent(self.hWaitStop)
            self.ReportServiceStatus(win32service.SERVICE_STOPPED)
            logging.info('Stopped service ...')
            self.stop_requested = True
    
        def SvcDoRun(self):
            servicemanager.LogMsg(
                servicemanager.EVENTLOG_INFORMATION_TYPE,
                servicemanager.PYS_SERVICE_STARTED,
                (self._svc_name_,'')
            )
    
            self.main()
    
        def main(self):
            app.run(host="0.0.0.0", port=5000)   # 服务运行函数
    
    if __name__ == '__main__':
        win32serviceutil.HandleCommandLine(HelloFlaskSvc)
    

    基本代码比较简单,但是现在还不能运行程序

    配置环境变量
    Python36\Lib\site-packages\win32
    Python36\Lib\site-packages\pywin32_system32
    这两个变量配置到环境path中
    

    启动服务 以管理员权限运行【否则报错: Error installing service: 拒绝访问。 (5)】

    服务安装
    python win_flask.py install
    让服务自动启动
    python win_flask.py --startup auto install
    启动服务
    python win_flask.py start
    重启服务
    python win_flask.py restart
    停止服务
    python win_flask.py stop
    删除/卸载服务
    python win_flask.py remove
    

    打开网页便可以访问服务了

    相关文章

      网友评论

        本文标题:Windows service 运行 flask

        本文链接:https://www.haomeiwen.com/subject/ycegvftx.html