美文网首页我的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