我使用Django(1.8.1)。
我需要一些python代码才能在Django启动时运行(apscheduler初始化),因此在我的一个项目应用程序中,以my_app
命名,我根据Django创建了apps.py
并声明了appconfig ready
方法文档。
from apscheduler.schedulers.background import BackgroundScheduler
from django.apps import AppConfig
from my_app.views import some_shecheduled_method
class ManagerConfig(AppConfig):
name = 'my_app'
verbose_name = "My Application"
scheduler = None
def ready(self):
ManagerConfig.scheduler = BackgroundScheduler()
ManagerConfig.scheduler.add_job(some_shecheduled_method, 'interval', seconds=15)
ManagerConfig.scheduler.start()
同样在申请__init__.py
中:
default_app_config = 'my_app.apps.ManagerConfig'
但是在将此项添加到应用程序日志中的__init__.py
后,我会看到项目中所有模型的下一条消息:
05/04 16:00:25|py.warnings:116:WARNING ./authsystem/models.py:51: RemovedInDjango19Warning: Model class authsystem.models.UserActionLog doesn't declare an explicit app_label and either isn't in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9.
class UserActionLog(Model):
另外当我在Django中使用这个apscheduler
时,它会在我重新加载应用程序时挂起(我使用uwsgi
+ py-autoreload=5
),我的方法可能会有一些错误,我需要使用另一种方式初始化调度程序