问题
最近使用
APScheduler
来实现一些定时功能,但是在我实际的生产环境中(Gunicorn->Uvicorn
)却出现了一个APScheduler任务重复执行
的问题,在网上翻阅了一些资料,上面有很多的方法:使用独占端口的方式,文件锁…最后根据我自己的实际情况我选择了redis锁
解决方案
在介绍具体的方案之前,我们需要大概的来了解一下如何实现这所谓的
redis锁
,由于redis是单线程
的数据库,所以在面对这些多进程/高并发的操作很容易实现加锁的功能,我们只需要使用它的set(集合)
功能就可以实现
- 这里我们先来了解一下
set(集合)
的用法