我有一个工作的Django项目及其数据库和模型表。现在,我想使用Django数据库连接集成APScheduler并将APScheduler作业保存在与其他表相同的数据库中。
我已经阅读了User Guide,它给出了代码中硬编码数据库连接字符串的示例:
from pytz import utc
from apscheduler.schedulers.background import BackgroundScheduler
from apscheduler.jobstores.mongodb import MongoDBJobStore
from apscheduler.jobstores.sqlalchemy import SQLAlchemyJobStore
from apscheduler.executors.pool import ThreadPoolExecutor, ProcessPoolExecutor
jobstores = {
'mongo': MongoDBJobStore(),
'default': SQLAlchemyJobStore(url='sqlite:///jobs.sqlite')
}
executors = {
'default': ThreadPoolExecutor(20),
'processpool': ProcessPoolExecutor(5)
}
job_defaults = {
'coalesce': False,
'max_instances': 3
}
scheduler = BackgroundScheduler(jobstores=jobstores, executors=executors, job_defaults=job_defaults, timezone=utc)
但配置数据我已经在Django设置文件中了。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'xxxxx',
'USER': "manager",
'PASSWORD': "xxxxxxxx",
'HOST': 'localhost', # Or an IP Address that your DB is hosted on
'PORT': '3306',
}
}
我可以只使用Django连接吗?我不想将这些数据写入另一个属性文件来维护两个文件。
我问这个基本上是因为我不想硬编码凭证。
编辑:
我意识到我可以使用类似的东西:
'url': 'mysql+mysqldb://' + settings.DATABASES['default']['USER'] + ':' +
settings.DATABASES['default']['PASSWORD'] + '@' +
settings.DATABASES['default']['HOST'] + '/' +
settings.DATABASES['default']['NAME']
现在,如果我的密码已加密,APScheduler会识别它吗?
您可能已经解决了这个问题,但是有一个第三方助手将APScheduler与Django集成,称为“django_apscheduler”,如docs中所述。
它可以使用PIP从PyPi安装,你可以找到docs on GitHub,虽然它们有点模糊。