У меня возникла проблема с отключением фоновой задачи с запланированным интервалом с использованием рабочего веб-сервера (IIS).
Мое приложение работает правильно со встроенным Werkzeug
веб-сервером, но при развертывании в 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
config.py
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
web.config
<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>