使用celery可以使得任務非同步執行,在處理複雜或耗時長的任務時經常需要,廢話不多說,直接進入正題。
結構樹
安裝各種包
pip install celery
pip install radis
_init_.py檔案中新增celery例項的建立函式
# 非同步佇列
taskbase = celery.task
class contexttask(taskbase):
abstract = true
def __call__(self, *args, **kwargs):
return taskbase.__call__(self, *args, **kwargs)
celery.task = contexttask
return celery
celery_broker_url = 'redis://localhost:6379/0'
celery_result_backend = 'redis://localhost:6379/0'
同級目錄建立乙個tasks.py指令碼
from random import randrange
from time import sleep
from . import make_celery
from .models import pic_data
from .ext import db
celery = make_celery()
@celery.task(name='task1')
def data_deal():
# 下面是要執行的非同步操作
t = randrange(0, 2)
pic = pic_data()
pic.name = 'wyman{}'.format(t)
db.session.add(pic)
db.session.commit()
檢視中呼叫
@blue.route('/', methods=['post', 'get'])
def index():
if request.method == 'get':
pic_list = pic_data.query.all()
return render_template('base.html', pic_list=pic_list)
# 呼叫celery的task任務
data_deal.delay()
return redirect(url_for('blue.index'))
然後首先開啟flask專案,再開啟celery,-a後面跟的是專案中celery例項的位置
python manage.py runserver -r
然後和預期一樣失敗了,原因大概可能是因為windows不太相容,但可以裝乙個包並在啟動celery時指定來解決
pip install eventlet
下面是成功執行時的圖
flask celery redis實現非同步任務
2 搭建目錄 3 啟動專案測試 pip3 install flask pip3 install redis 3.5.3 pip3 install celery 5.0.0 1.2.1 安裝 1 安裝gcc yum install y gccwget tar zxvf redis 5.0.3.tar....
golang redis之set型別簡單操作
1 安裝redigo go get github.com garyburd redigo redis2 連線redis 3 命令執行 n,err c.do sadd key value 寫 result,err redis.values c.do smembers key 讀 4 set型別常見操作...
python對memcached的簡單操作
python memcached模組原生支援集群操作,其原理是在記憶體維護乙個主機列表,且集群中主機的權重值和主機在列表中重複出現的次數成正比。主機 權重 1.1.1.1 11.1 1.2 21.1 1.31 那麼在記憶體中主機列表為 host list 1.1.1.1 1.1.1.2 1.1.1....