說在前頭
用Python搞後臺開發的,應該都知道celery的重要性。廢話不多說,搞起。
安裝使用pip來安裝,環境python3+
Flask-Celery-Helper==1.1.0celery==4.1.0redis==3.0.1準備工作
目錄結構app\t|-__init__.py\t|-tasks.pyconfig.pycelery_runner.py
celery_runner.py
tasks.py
def task_demo(): print("執行到我了")
__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) # 後臺任務
config.py
import osbasedir = os.path.abspath(os.path.dirname(__file__))class Config: \t\t\tJSON_AS_ASCII = False \t\t\tSECRET_KEY = os.environ.get('SECRET_KEY') or 'hard to guess string'\t\t\tCELERY_BROKER_URL = 'redis://:密碼@127.0.0.1:6379/11' #使用redis \t\t\tCELERY_RESULT_BACKEND = 'redis://:密碼@127.0.0.1:6379/11'#使用redis @staticmethod def init_app(app):\t\t\t\t\tpassclass DevelopmentConfig(Config): DEBUG = Trueclass TestingConfig(Config): TESTING = Trueclass ProductionConfig(Config): DEBUG = Falseconfig = { 'development': DevelopmentConfig, 'testing': TestingConfig, 'production': ProductionConfig, 'default': DevelopmentConfig}使用
在根目錄下開啟celery服務
celery worker -c 2 -A celery_runner --loglevel=info
具體引數,獨自去網上找。
呼叫:
task_demo.apply_async()使用場景
1.就比如發郵箱這個例子吧。使用者點擊發郵箱後,後臺非同步去執行,而不是阻塞等到發完成功後才提示使用者說郵箱傳送成功。而是馬上去非同步執行釋出郵箱,提示使用者去檢視郵箱。
2.匯出大量訂單。你可以後臺去執行,並生成excel放在後臺,之後提供給客戶下載即可。又或者可以用長連線操作提示使用者。
。。。
場景很多。我就不一一說明了。
說在最後假如有幫助到你,或者你也是python愛好者,點贊,關注,轉發。我會持續更新我日常在專案用到的工具,分享給大家。