Python APS&x2B;带反向代理的Flask不运行APS作业

Python APS&x2B;带反向代理的Flask不运行APS作业,python,python-2.7,nginx,flask,apscheduler,Python,Python 2.7,Nginx,Flask,Apscheduler,我有一个Flask应用程序,它使用APS(高级python调度程序)通过FTP处理文件传输。当我使用Werkzeug进行测试时,这非常有效。当我使用CherryPy进行测试时,这非常有效。当我使用Gunicorn进行测试时,这非常有效。但是,当我使用Nginx+CherryPy或Gunicorn反向代理进行测试时,作业被安排好了,但从未运行过。可以唤醒调度程序、停止/启动调度程序、暂停和恢复作业,但它们从未运行过,我不知道从何处开始调试 APS的设置如下所示: DEFAULT_MISFIRE_G

我有一个Flask应用程序,它使用APS(高级python调度程序)通过FTP处理文件传输。当我使用Werkzeug进行测试时,这非常有效。当我使用CherryPy进行测试时,这非常有效。当我使用Gunicorn进行测试时,这非常有效。但是,当我使用Nginx+CherryPy或Gunicorn反向代理进行测试时,作业被安排好了,但从未运行过。可以唤醒调度程序、停止/启动调度程序、暂停和恢复作业,但它们从未运行过,我不知道从何处开始调试

APS的设置如下所示:

DEFAULT_MISFIRE_GRACETIME = 10800  # seconds
DEFAULT_URL = 'sqlite:///myapp/var/db/jobs.sqlite.db'
MAX_JOB_INSTANCES = 1
THREADS = 20
COALESCE = True

jobstores = {
    'default': SQLAlchemyJobStore(url=DEFAULT_URL)
}

executors = {
    'default': ThreadPoolExecutor(THREADS)
}

job_defaults = {
    'coalesce': COALESCE,
    'max_instances': MAX_JOB_INSTANCES,
    'misfire_grace_time': DEFAULT_MISFIRE_GRACETIME
}

scheduler = BackgroundScheduler(jobstores=jobstores, executors=executors,
                                job_defaults=job_defaults, timezone=pytz.utc)

scheduler.start()
作业是这样安排的(其中“when”是datetime对象,“rid”和“sid”是整数ID,前者是要发送的内容的ID,后者是要发送到的服务的ID)

发送的部分看起来像这样

class Worker:

    @staticmethod
    def xmit_files(rid=None, sid=None):
        from myapp.app import create_app
        app = create_app()
        with app.app_context():
            svc = myapp.core.service.models.Service.get(sid)
            rsh = Rdata.query.get(rid)  # SQLAlchemy
            svc.xmit(rsh)
     ...
(健全性检查、日志记录、重试/为清晰起见排除的块除外。)同样,只要它不在Nginx后面运行,但只要它在Nginx后面运行,就可以正常工作,只要它的作业已安排但从未运行。我认为执行作业的过程永远不应该与Nginx交互。这可能与需要Flask应用程序上下文有关吗?(只是猜测,我真的不知道。)

class Worker:

    @staticmethod
    def xmit_files(rid=None, sid=None):
        from myapp.app import create_app
        app = create_app()
        with app.app_context():
            svc = myapp.core.service.models.Service.get(sid)
            rsh = Rdata.query.get(rid)  # SQLAlchemy
            svc.xmit(rsh)
     ...