mac下搭建flask项目,并启动celery并行任务

1.系统以及软件版本

系统:mac10.13.6

python版本:python3.11

flask版本:3.0.2

celery版本:5.3.6

flask-redis版本:0.4.0

pycharm版本:PyCharm 2022.2.5 (Professional Edition)


2.搭建过程

确保正确安装pycharm,python3.11(低版本可能会存在与flask不兼容的情况)

pycharm中新建项目选择flask项目

创建以后在当前目录的终端下执行python -m venv myenv,使用python自带的虚拟环境venv创建新的虚拟环境myenv

激活虚拟环境source myenv/bin/activate,此时目录中将多一个虚拟环境路径

为了提高pip的安装速度,永久更改pip安装的镜像源,终端中执行 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple  

然后就可以使用pip安装各种需要的包了,包括flask,celery等。

app,celery的定义

在项目的开发过程中为了避免出现循环引用的问题,我采用app和celery在蓝图blueprints包的__init__.py文件中定义,在主文件app.py中引入定义的方式。

定义app

def create_app():
    app = Flask(__name__, static_folder='', template_folder='templates')
    app.config.from_object(config)

    # 注册蓝图
    from .auth import bp as auth_bp
    app.register_blueprint(auth_bp)

    return app

定义celery

def make_celery(app):
    class ContextTask(celery.Task):
        def __call__(self, *args, **kwargs):
            with app.app_context():
                return self.run(*args, **kwargs)

    celery.Task = ContextTask
    return celery

app.py中

app = create_app()
celery = make_celery(app)

并行任务的定义

为了使代码结构更加的清晰,并行任务我在蓝图blueprints包中新建个子包进行定义,如下modelForecast。

并行任务的代理安装

电脑中需要安装redis,并启动服务。命令为redis-server

并行任务启动

在虚拟环境中执行celery -A app.celery worker --loglevel=info启动celery工人

启动问题

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=9000, debug=False)

代码不生效,需要在pycharm中将flask程序转换成python程序,然后再执行后有效

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值