我使用webpy(webpy.org)编写了一个应用程序.此Web应用程序的一部分是统计功能的重复后台任务.我使用APScheduler python库来执行cron样式计划.因为app.run()允许webpy在开发期间以独立模式运行.这个设置很好.
然而,当它部署时,我发现APScheduler不再起作用.部署过程几乎遵循this article.我的入口点程序仍然打印成功的调度日志.但是当没有收到请求时,似乎uwsgi将暂停正在运行的webpy应用程序(使线程暂停).如果我刷新一个页面,APScheduler会唤醒,打印几个警告:apscheduler.scheduler:运行时间的工作“worker(触发器:cron […],下次运行:..)”0:04错过了: 36.389705条消息.他们没有按照时间表运行.
我的问题是,在部署uwsgi webpy应用程序时如何安排cron样式任务.我看到uwsgi本身有cron支持.但我想知道如何将它与我的应用程序混合,如APScheduler(或替换它)?任务取决于应用程序的一些模块和动态属性,因此无法轻松转换为独立的.py程序.
解决方法:
如果ApsScheduler需要线程,则应在uWSGI中使用–enable-threads启用它们