先说结论: flask-apscheduler 中如果要调用 app_context环境的话,用 scheduler.app.app_context

详细过程:

1. 环境与背景,使用Flask 还有flask-apscheduler flask-sqlalchemy 这几个东西重构了一个自己版本的 https://github.com/guomaoqiu/JobCenter 工具,用来管理自己的工作,因为应用使用了 flask-sqlalchemy 所以很多操作要在 flask的app_context中运行,就使用了flask-apscheduler,遇到了 Run time of job xxx was missed by xxx...bug

2. Debug过程:

常见的第一个原因就是多次启动,解决方法也简单 use_reloader 关掉就好了

app.run(host="0.0.0.0", debug=True, use_reloader=False)

但是,偶尔的偶尔 还是出现这个问题,通常都是任务等了很久都没有开始,这块就会出现这个问题...

https://blog.csdn.net/weixin_44786530/article/details/90731800 这位大佬的文章已经讲解了我的整个过程,简单的说就是对APSCHEDULER的配置都没啥用,主要是你启动的东西没起来...

回到我的DEBUG过程,因为程序没有log出来,没有告诉我具体的启动哪里失败了,这就TM很难搞。

看了下代码调用环境时 我用的是 from xxx import app 然后再用 with app.app_context

我发现我开着页面,这个定时任务就能跑,如果我关了所有flask相关页面这东西就跑不起来了....

而且他不是跑起来后报错,就是MISSED,这里我的推测是本身flask-apscheduler 调起一个任务时候,没有加载(或者加载了flask-aps对应的context,而不是想要的全局app的环境),因此如果没有前端页面时候,调用 app.app_context这块就会卡住

在flask-apscheduler 官方文档里其实提了一嘴
https://viniciuschiele.github.io/flask-apscheduler/rst/usage.html 最后一个段落:如果你用flask-apscheduler 调起的任务 需要app_context 的话 应该用 scheduler(对应实例).app.app_context

目前APP已经没有这个需要打开页面才能跑的问题了!

1. 环境与背景,使用Flask 还有flask-apscheduler flask-sqlalchemy 这几个东西重构了一个自己版本的https://github.com/guomaoqiu/JobCenter工具,用来管理自己的工作,因为应用使用了flask-sqlalchemy 所以很多操作要在 flask的app_context中运行,就使用了flask-apscheduler,遇到了Run time of job xxx was missed by xxx...bug先说结论: fl... (注:demo版本部分功能已补充) :beer_mug: ) $ git clone https://github.com/guomaoqiu/ Job Center.git $ cd Job Center $ pipenv install --dev $ pipenv shell # 需提前创建数据库 $ flask init $ flask run * Run ning on http://127.0.0.1:5000/ $ pipenv install # 创建虚拟环境并安装依赖 $ pipenv shell # 激活虚拟环境 $ flask initdb # 初始化数据库 $ flask ad mi n # 创建管理员账户 $ flask initdb --drop # 删除数据 APSche duler 工作 流程图 清爽的登录界面 针对不同逐步动态增加定时任务 任务执行输出日志持久化存放并展示 apsche duler 实现定时任务 报错 Run time of job "login (trigger: interval[0:10:00], next run at: 2021-04-22 18:39:54 CST)" was mi sse d by 0:00:02.547804 coalesce:当由于某种原因导致某个 job 积攒了好几次没有实际运行(比如说系统挂了5分钟后恢复,有一个任务是每分钟跑一次的,按道理说这5分钟内本来是“计划”运行5次的,但实际没有执行),如果coalesce为True,
关于 Flask - APSche duler 定时任务遇到的问题及 解决 方法 1.app初始化的时,就要初始化Sche duler 对象,并且设置为app的属性并 启动 ,在接口中初始化,添加定时任务是无效的。 2.执行时 报错 Run time Error: No application found. Either work inside a view function or push an application context. Run time Error: Working outside of application co
git clone https://github.com/viniciuschiele/ flask - apsche duler .git cd flask - apsche duler python setup.py install 3. 在需要使用的 python 文件中导入 Flask - APSche duler from flask _ apsche duler import APSche duler 安装完成后,可以在 flask app中使用 APsche duler 来实现定时任务。 code-server 扩展无法启动,报错‘crypto.subtle‘ is not available so webviews will not work的解决方法 三头六臂的小白: 补充一下 conda 对于解决扩展问题来说不是必要的,这里只是说明一下 如果你要用conda 环境的情况下的使用说明 使用docker版paddle镜像 提示 You are using GPU version Paddle, but your CUDA device is not set properly 三头六臂的小白: 另外一个注意的: 在docker run 时候 要加 --gups all 最新:linux下最新libsodium安装方法 (debian ubuntu20.04测试通过 ) 三头六臂的小白: 这个估计就是权限问题 检查下 6.运行 sudo make install 这个Permission denied 一般都是权限问题,也有可能你的用户就米有sudo 权限,换个有sudo权限的账号试试。 最新:linux下最新libsodium安装方法 (debian ubuntu20.04测试通过 ) 匆匆又夏天-q: sbin/ldconfig.real: Can't create temporary cache file /etc/ld.so.cache~: Permission denied 老哥,这是怎么回事,我给权限了啊 开启Hyper-v,使用蓝叠模拟器进行抓包的曲折经历 三头六臂的小白: 最新版的确实可以了,不过我现在推荐 bluestack ,安装 xposed 和 root 都方便一点,不过有个问题每次重启 对应adb端口会变。