Celery和Flask的结合(在Blueprint控制下的部署)
2017-12-05 11:07
381 查看
方便他人,也为了记录知识
备注:前提是已经按照好了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 Celery celery=Celery()
__init__.py
# -*- coding:utf-8 -*- from flask import Flask from config import config from flask_sqlalchemy import SQLAlchemy from datetime import timedelta ###从自己写的extensions.py导入celery from .extensions import celery db = 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 celery from 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 timedelta class Config(object): ###自己的内容 ###关键!配置celery class 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 os from app import create_app from celery import Celery from app.tasks import log from config import config def 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 celery env=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:这是最初版本,日后可能会更新
相关文章推荐
- Flask restful api与blueprint结合实践
- flask结合celery实现异步响应HTTP请求
- 智能家居软硬件结合之手机控制电器(树莓派)
- 在win10系统IIS下部署flask
- weblogic部署应用,访问控制台就报内存溢出
- [bigdata-053] flask开发和高并发部署
- 在Mac OS上部署Nginx和FastCGI以及Flask框架的教程
- 部署inotify 结合rsync
- 用Sysprep结合Ghost进行操作系统的快速部署
- 版本控制、缺陷管理和持续集成结合实践报告(一)
- 【译】在Flask中使用Celery
- 阿里云ESC网站部署Flask+gunicorn+nginx+supervisor
- 采用Apache+mod_wsgi在windows下搭建Flask项目(本地部署Flask的生产环境)
- C#用 SendKyes 结合 Process 或 API FindWindow、SendMessage(PostMessage) 等控制外部程序[转]
- OpenStack IceHouse 部署 - 3 - 控制节点部署
- flask celery 设置定时任务
- CentOS 6.5 Python 2.6.6+Flask 用wsgi方式部署在Apache 2.2.15下
- 多线程编程-线程控制与属性(结合与分离)