代码之家  ›  专栏  ›  技术社区  ›  WesternGun

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

  •  0
  • WesternGun  · 技术社区  · 7 年前

    我有一个正在运行的Django项目及其数据库和模型表。现在,我想使用Django数据库连接集成APScheduler并将APScheduler作业保存在与其他表相同的数据库中。

    我已经阅读了 User Guide 其中给出了将db连接字符串硬编码为代码的示例:

    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会识别它吗?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Grant Anderson    6 年前

    您可能已经解决了这一问题,但有一个第三方帮助程序可以将APScheduler与Django集成,名为“Django\u APScheduler”,如 docs .

    可以使用PIP从PyPi安装它,您可以找到 docs on GitHub ,尽管它们有点模糊。