小编For*_*ahz的帖子

如何在Windows服务中运行APScheduler ...我几乎就在那里

我正在开发一个项目,将Python APScheduler作为Windows服务运行,结果将转换为文本文件.我可以毫不费力地安装和启动服务.

我尝试了几种在服务中运行调度程序的方法,最常见且令人沮丧的结果是,当我停止服务时,调度程序的线程继续写入文本文件.我必须重新启动计算机以终止线程.

我尝试过"阻塞"和"后台"调度程序,它们的行为相同.

我已经将scheduler.shutdown()移动到不同的地方.我想将它放在服务停止功能中并让调度程序运行,直到服务收到停止命令,服务停止功能将处理关闭调度程序.

也许你可以指出我正确的方向?以下是清理过的代码,以确保您不必重新启动计算机.

import win32serviceutil
import win32service
import win32event
import servicemanager
import socket
import time
import logging
import configparser
import os

from datetime import datetime
from mysql.connector import errorcode
from apscheduler.schedulers.background import BackgroundScheduler

global FILEPATH
global SERVICE

#Define constants
FILEPATH = os.path.dirname(os.path.realpath(__file__))
SERVICE = 'service.log'

logging.basicConfig(
    filename = '%s\\%s' % (FILEPATH, SERVICE),
    level = logging.DEBUG, 
    format = '[Logging Service] %(levelname)-7.7s %(message)s'
)


def hi(text):
    logging.info(text)
    return

class HelloWorldSvc (win32serviceutil.ServiceFramework):
    _svc_name_ = "Logging-Service"
    _svc_display_name_ = "Logging Service"
    _svc_description_ …
Run Code Online (Sandbox Code Playgroud)

windows service multithreading python-3.x apscheduler

5
推荐指数
1
解决办法
988
查看次数