flask项目初始化时使db和连接到redis数据库的对象能被调用

修改其为全局变量

# -*- coding: utf-8 -*-
import redis
from flask import Flask
from flask_session import Session
from flask_wtf.csrf import CsrfProtect
from flask_sqlalchemy import SQLAlchemy
from config import configs

app = Flask(__name__)

# 使db能够在别的地方被调用
db = SQLAlchemy()
# 使redis_store能够在别的地方被调用
redis_store = None

def get_app(config_name):
    # 1,添加配置信息
    app.config.from_object(configs.get(config_name))


    # 3,注册链接到数据库的对象
    # db = SQLAlchemy(app)
    db.init_app(app)
    # 创建链接到redis数据库的对象
    global redis_store
    redis_store = redis.StrictRedis(host = configs.get(config_name).REDIS_HOST,port = configs.get(config_name).REDIS_PORT)

    # 开启CSRF保护
    CsrfProtect(app)

    # 使用session在flask扩展实现将session数据存储在redis
    Session(app)

    return app.

要实现定任务的持久化,可以使用 Flask 框架结合 APScheduler Redis 数据库。具体步骤如下: 1. 安装 Flask、APScheduler Redis: ``` pip install flask apscheduler redis ``` 2. 创建 Flask 应用,并配置 Redis 数据库: ```python from flask import Flask from apscheduler.schedulers.background import BackgroundScheduler from redis import Redis app = Flask(__name__) redis = Redis(host='localhost', port=6379) scheduler = BackgroundScheduler() scheduler.start() ``` 3. 创建定任务,并将任务存储到 Redis 数据库中: ```python from datetime import datetime def job(): print('Hello, World!') # 将任务添加到调度器中 scheduler.add_job(job, 'interval', seconds=10) # 将任务信息存储到 Redis 中 job_info = { 'id': 'job1', 'func': job.__name__, 'trigger': 'interval', 'seconds': 10, 'next_run_time': datetime.now().strftime('%Y-%m-%d %H:%M:%S') } redis.set('job1', json.dumps(job_info)) ``` 4. 创建 Flask 路由,用于展示定任务列表: ```python import json @app.route('/jobs') def jobs(): jobs = [] for key in redis.keys(): job_info = json.loads(redis.get(key)) jobs.append(job_info) return json.dumps(jobs) ``` 5. 启动 Flask 应用: ```python if __name__ == '__main__': app.run(debug=True) ``` 至此,定任务的持久化功能就完成了。需要注意的是,如果定任务需要在多台服务器上共享,需要将 Redis 数据库配置为共享的,否则每台服务器上的定任务都是独立的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值