最近项目需要一个定时任务,本来打算不写进Django 的,因为只是一个简单的定时任务。因此就直接加入到了 Django,
本地使用Django 为1.9.2 版本,
APScheduler3.6.1
APScheduler的使用这里不做过多说明,网上搜索会有很多例子。
写完之后测试没有问题,就直接在服务器上运行,重启服务后,一直 没有运行,奇怪是什么原因呢,怎么就不允许了呢。
python manage.py runserver 192.168.1.130:9000 运行 ,发现任务又运行了,uwsgi启动,等了会又不运行。
因为我是将定时任务写进了view 文件,整个scheduler 初始化都是通过调用view 文件进行的, 但是
使用python manage.py runserver 0.0.0.0:80启动项目是通过manage.py进行驱动的,无论调用放 置在哪个视图文件中,都会被调用,而使用uwsgi进行驱动后,不调用manage.py,导致无法启动计划任务。
解决办法:
1.uwsgi配置添加--enable-threads = true 允许在django 内部启动子线程
2.在项目的wsgi.py文件导入APScheduler实例化对象
import os
from django.core.wsgi import get_wsgi_application
from BusinessLogic.viewResources import scheduler
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "testA