軟件版本
win10
Python3.7
Flask 1.1.1
celery 4.4.1
注意事項
運行本文的案例,你需要一個redis服務器
windows安裝redis可參考菜鳥教程
源碼傳送門
https://gitee.com/creatorgg/Flask_Lab.git
1. 創建虛擬環境
virtualenv venv --no-site-packages
2. 安裝Flask與Celery
# 激活虛擬環境
.\venv\Scripts\activate
pip install flask==1.1.1 celery==4.4.1 redis
# 安裝gevent, 作爲運行celery的附加組件(可選)
pip install gevent
# 安裝python-dotenv,用於從.flaskenv中加載flask的環境變量
pip install python-dotenv
3. 構建一個簡單的Flask應用
項目結構如下,非常簡單
代碼傳送門
https://gitee.com/creatorgg/Flask_Lab.git
backend.__init__.py的內容如下,讓flask收到請求後,調用函數write_something_to_file,這個函數將會由celery執行
from flask import Flask
from backend.sched.tasks import write_something_to_file
app = Flask(__name__)
@app.route('/celery', methods=['GET'])
def test_celery():
write_something_to_file()
return 'OK', 200
celery部分的代碼,請自行下載源碼查閱
4. 運行項目
打開兩個命令行終端,均激活虛擬環境,進入到項目所在文件夾,
即包含上圖中backend的文件夾
終端1運行flask run,啓動flask應用
終端2執行如下命令,啓動celery進程
# -A 後指定celery.py所在的包
# --concurrency=4 設置併發量爲4
celery -A backend.sched worker -l info -P gevent --concurrency=4
5. 用瀏覽器測試
打開瀏覽器,輸入http://127.0.0.1:5000/celery
運行成功時,將會在項目內看到一個hello.txt,這是在flask收到請求後,利用celery生成的。