Python 異步任務(wù)神器 Celery 結(jié)合Flask使用!
2020-11-20 13:40:28
來源:互聯(lián)網(wǎng)
閱讀:-
說在前頭用Python搞后臺開發(fā)的,應(yīng)該都知道celery的重要性。廢話不多說,搞起。安裝使用pip來安裝,環(huán)境python3+Flask-Celery-Helper==1.1.0celery==4.1.0redis==3.0....
說在前頭
用Python搞后臺開發(fā)的,應(yīng)該都知道celery的重要性。廢話不多說,搞起。
安裝
使用pip來安裝,環(huán)境python3+
Flask-Celery-Helper==1.1.0
celery==4.1.0
redis==3.0.1
準(zhǔn)備工作
目錄結(jié)構(gòu)
app
|-__init__.py
|-tasks.py
config.py
celery_runner.py
celery_runner.py
tasks.py
def task_demo():
print("執(zhí)行到我了")
__init__.py
from flask_celery import Celery
def create_app(config_name):
app = Flask(__name__)
db.app = app
app.config.from_object(config[config_name])
config[config_name].init_app(app)
celery.init_app(app) # 后臺任務(wù)
config.py
import os
basedir = os.path.abspath(os.path.dirname(__file__))
class Config:
JSON_AS_ASCII = False
SECRET_KEY = os.environ.get('SECRET_KEY') or 'hard to guess string'
CELERY_BROKER_URL = 'redis://:密碼@127.0.0.1:6379/11' #使用redis
CELERY_RESULT_BACKEND = 'redis://:密碼@127.0.0.1:6379/11'#使用redis
@staticmethod
def init_app(app):
pass
class DevelopmentConfig(Config):
DEBUG = True
class TestingConfig(Config):
TESTING = True
class ProductionConfig(Config):
DEBUG = False
config = {
'development': DevelopmentConfig,
'testing': TestingConfig,
'production': ProductionConfig,
'default': DevelopmentConfig
}
使用
在根目錄下開啟celery服務(wù)
celery worker -c 2 -A celery_runner --loglevel=info
具體參數(shù),獨自去網(wǎng)上找。
調(diào)用:
task_demo.apply_async()
使用場景
1.就比如發(fā)郵箱這個例子吧。用戶點擊發(fā)郵箱后,后臺異步去執(zhí)行,而不是阻塞等到發(fā)完成功后才提示用戶說郵箱發(fā)送成功。而是馬上去異步執(zhí)行發(fā)布郵箱,提示用戶去查看郵箱。
2.導(dǎo)出大量訂單。你可以后臺去執(zhí)行,并生成excel放在后臺,之后提供給客戶下載即可。又或者可以用長連接操作提示用戶。
。。。
場景很多。我就不一一說明了。
說在最后
假如有幫助到你,或者你也是python愛好者,點贊,關(guān)注,轉(zhuǎn)發(fā)。我會持續(xù)更新我日常在項目用到的工具,分享給大家。
免責(zé)聲明:本文僅代表企業(yè)觀點,與新疆信息港無關(guān)。其原創(chuàng)性以及文中陳述文字和內(nèi)容未經(jīng)本站證實,對本文以及其中全部或者部分內(nèi)容、文字的真實性、完整性、及時性本站不作任何保證或承諾,請讀者僅作參考,并請自行核實相關(guān)內(nèi)容。