使用django_apscheduler动态创建定时任务,同一个任务被执行多次,暂时猜测原因是通过uwsgi启动django服务是多进程,每个进程启动了一个定时任务调度器,造成同一个定时任务被多次执行。
关于这个问题向django_apscheduler开发者发送邮件咨询,没有回复..
目前的解决方法:
1.固定的定时任务,通过socket或文件锁的方式解决,百度可查。但动态添加时不可用,会造成无法添加定时任务的问题。
2.设定uwsgi进程数为1,此方法限制了django服务的并发量,小规模访问时可采用此种方法,简单稳定.
3.通过类似celery的方式将django_apscheduler定时任务独立出来单独启动一套服务,设定单进程运行。这种方法解决了重复执行的问题,同时解放了django后台并发限制,并且可以处理即时的异步任务。(这是我自己的解决办法)