django + apscheduler - 如何配置APScheduler以在settings.py中使用django db连接数据?

问题描述 投票:0回答:1

我有一个工作的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会识别它吗?

python mysql django apscheduler
1个回答
1
投票

您可能已经解决了这个问题,但是有一个第三方助手将APScheduler与Django集成,称为“django_apscheduler”,如docs中所述。

它可以使用PIP从PyPi安装,你可以找到docs on GitHub,虽然它们有点模糊。

© www.soinside.com 2019 - 2024. All rights reserved.