首页 > 解决方案 > Flask apscheduler 在 IIS 上无法正常工作

问题描述

我在使用生产网络服务器 (IIS) 让我的后台任务按预定时间间隔启动时遇到问题。

我的应用程序可以在内置的WerkzeugWeb 服务器上正常工作,但是当我部署到 IIS 时,后台任务不会每 5 分钟触发一次。相反,它将在网页加载后 5 分钟运行。这是因为我在 中初始化了调度程序__init__.py吗?

__init__.py

import os
from flask import Flask
from flask_apscheduler import APScheduler
from apscheduler.schedulers.background import BackgroundScheduler

app = Flask(__name__)

app.config.from_object('app.config.BaseConfig')


# Setup the database
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy(app)

scheduler = APScheduler(BackgroundScheduler())
scheduler.init_app(app)
scheduler.start()

# Import the views
from app.views import main, error

配置文件

import logging
import os

SCHEDULER_JOBS = [
    {
        'id': 'read',
        'func': 'app.read_licenses:read',
        'trigger': 'interval',
        'minutes': 5
    }
]


class BaseConfig(object):
    """Base configuration"""
    JOBS = SCHEDULER_JOBS
    SCHEDULER_JOB_DEFAULTS = {
        'coalesce': False,
        'max_instances': 1
    }
    # use sqlite by default
    SQLALCHEMY_DATABASE_URI = os.getenv('DATABASE_URL', 'sqlite:///app.db')
    SCHEDULER_API_ENABLED = True

网络配置

<configuration>
 <system.webServer>
   <handlers>
    <add name="Python FastCGI"
       path="*"
       verb="*"
       modules="FastCgiModule"
       scriptProcessor="c:\inetpub\wwwroot\myapp\venv\scripts\python.exe|c:\inetpub\wwwroot\myapp\venv\lib\site-packages\wfastcgi.py"
       resourceType="Unspecified"
       requireAccess="Script" />
   </handlers>
 </system.webServer>
 <appSettings>
   <!-- Required settings -->
   <add key="WSGI_HANDLER" value="app.app" />
   <add key="PYTHONPATH" value="C:\inetpub\wwwroot\myapp" />

    <!-- Optional settings -->
    <add key="WSGI_LOG" value="C:\iis-logs\myapp.log" />
 </appSettings>
 </configuration>

标签: pythoniisflaskapschedulerwfastcgi

解决方案


推荐阅读