没有使用 GitHub 上的 Flask-APScheduler 插件
自己写了一个类 在 add_job 的时候给 func 套了一层 里面添加了 flask 的应用上下文 如下
然后这是配置 任务存储用了 redis
调度器用的是 Gevent 的
但是运行的时候还是报了上下文外的错误
可是换成 MemoryJobStore 就不会报错(看了文档区别貌似是 MemoryJobStore 不会序列化 job, 难道是因为这个吗?)
有大佬遇到过类似的情况吗 或者说有其他方法向 job 添加 flask 应用上下文吗
1
Ritter OP 类似的[issue]( https://github.com/agronholm/apscheduler/issues/331)
|
2
Ritter OP ![YluZtS.gif]( https://s1.ax1x.com/2020/05/09/YluZtS.gif)
|
3
est 2020-05-09 17:37:43 +08:00
python 基于 wsgi 的 web 框架一律不要另外起 thread,或者任意其他异步任务。单独开个进程 worker
|
5
forrestshuang 2020-05-09 17:49:14 +08:00
@Ritter 要用进程,thread 会阻塞 掉
|
6
Ritter OP @forrestshuang 我这个问题应该跟进程或者线程没什么关系吧。。。
|
7
est 2020-05-09 17:57:13 +08:00
|
8
Latin 2020-05-09 17:57:32 +08:00
function 内部试试 current_app._get_current_object()
|
9
Latin 2020-05-09 17:57:48 +08:00 1
app = current_app._get_current_object()
|
10
Ritter OP |
15
wzwwzw 2020-05-09 19:20:09 +08:00
APScheduler 如果用 gunicorn 的话,会重复启动,我们现在采用的方案是 apscheduler 单独启动,使用 RPC 的模式交互。
|
16
lsvih 2020-05-09 19:28:08 +08:00
遇到过一样的问题,我绕了一下,单独用 apscheduler 执行命令把结果写到数据库,然后前端定时请求。。
|
17
so1n 2020-05-09 19:54:58 +08:00
最好还是把 Apscheduler 与 flask 解耦,不要一起运行
|