Celery和Flask的结合(在Blueprint控制下的部署)
来源:互联网 发布:软件怎么开发视频教程 编辑:程序博客网 时间:2024/06/18 04:39
方便他人,也为了记录知识
备注:前提是已经按照好了celery,为什么不用RabbitMQ呢?
因为我用的是linux,发现RabbitMQ并不是python语言编写的,安装十分麻烦(个人感觉)
#接下来是正文#
首先是项目的目录预览(只列出来了相关的模块)
Proj/
app/
extensions.py
__init__.py
tasks.py
config.py
manage.py
celert_runner.py
extensions.py
from flask.ext.celery import Celerycelery=Celery()
__init__.py
# -*- coding:utf-8 -*-from flask import Flaskfrom config import configfrom flask_sqlalchemy import SQLAlchemyfrom datetime import timedelta###从自己写的extensions.py导入celeryfrom .extensions import celerydb = SQLAlchemy()def create_app(config_name): app = Flask(__name__) app.config.from_object(config[config_name]) config[config_name].init_app(app)####初始化celery把与Flask创建的app相关联 celery.init_app(app) db.init_app(app) return app
tasks.py
###执行的任务文件from app.extensions import celeryfrom app.store.models import Channel from app import db@celery.task()def log(msg) result=Channel.query.all() return result
config.py
###项目的配置文件from datetime import timedeltaclass Config(object): ###自己的内容###关键!配置celeryclass LastConfig(Config): DEBUG = True ###配置celery CELERY_BROKER_URL = 'redis://localhost:6379/0' CELERY_RESULT_BACKEND = 'redis://localhost:6379/0' SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:123456@localhost:3306/dream_db" ###这个是定时任务,可有可无 CELERYBEAT_SCHEDULE = { 'log-3s':{ 'task':'app.tasks.log', "schedule": timedelta(seconds=3), "args":('TestMessage',) } }class TestConfig(Config): DEBUG = True SQLALCHEMY_ECHO = True SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:123456@localhost:3306/test_data"config = {'default':LastConfig, 'test':TestConfig}
celery_runner.py
import osfrom app import create_appfrom celery import Celery from app.tasks import logfrom config import configdef make_celery(app): celery = Celery( app.import_name, broker=app.config['CELERY_BROKER_URL'], backend=app.config['CELERY_RESULT_BACKEND'] ) celery.conf.update(app.config) Taskbase=celery.Task class ContextTask(Taskbase): abstract=True def __call__(self,*args,**kwargs): with app.app_context(): return Taskbase.__call__(self,*args,**kwargs) celery.Task=ContextTask return celeryenv=os.environ.get('WEBAPP_ENV','Last')flask_app=create_app('default') 'app.config.%sConfig' %env.capitalize()celery=make_celery(flask_app)
manage.py文件是flask-script的管理文件,里面没有任何关于celery的代码,显示出来纯粹是为了目录看的更清楚
ps:这是最初版本,日后可能会更新
阅读全文
0 0
- Celery和Flask的结合(在Blueprint控制下的部署)
- Flask和Celery的使用
- Celery源码分析(五)----------Consumer的Blueprint
- 采用Apache+mod_wsgi在windows下搭建Flask项目(本地部署Flask的生产环境)
- celery的部署
- flask 中的蓝图 blueprint 的理解
- flask 中的蓝图 blueprint 的理解
- Flask 用Blueprint实现模块化的应用
- flask+mod-wsgi+apache在WINDOWS下的部署
- 蓝图(blueprint)的理解和用法
- linux下gunicorn+flask项目的部署
- 在 Flask 中使用 Celery
- 在 Flask 中使用 Celery
- Celery源码分析(三)---------Blueprint
- flask蓝图(Blueprint)简单测试例子运行不成功的原因:注册时机不对
- flask使用Blueprint进行多模块应用的编写
- flask 应用的架构和部署(flask+gunicorn+nginx)
- Flask-Blueprint
- JDK1.7&1.8HashMap不同
- 725. Split Linked List in Parts
- 文章标题
- 环形单链表的约瑟夫问题 Python版
- Python基础篇之break退出循环
- Celery和Flask的结合(在Blueprint控制下的部署)
- 手动下载subclipse二进制包地址
- C和C++中的const
- Java进阶之Aiax无刷新分页知识点总结
- github 文件创建及上传
- maven项目打包
- java ==
- List集合
- Animate.css 一款强大的预设动画库