[ Celery ] Asynchronous Tasks in Python - Celery Backend Tutorial (2/4)
本文為影片筆記,文中內容與影片不一定完全相同。
Celery 的記錄器有非常多的選擇,有興趣可以參考這裡,影片中使用的是 Database。
將 Celery 官方提供的 Database 連結加入上一篇文章的代碼中:
慚愧的說,使用 SQLite 是因為其他的資料庫都不太熟。應該會再找時間學學其他的資料庫。
Asynchronous Tasks in Python - Getting Started With Celery (1/4)
Asynchronous Tasks in Python - Celery Backend Tutorial (2/4)
Asynchronous Task in Flask Using Celery (3/4)
Flask, Celery & SQLAlchemy Example (4/4)
Celery 的記錄器有非常多的選擇,有興趣可以參考這裡,影片中使用的是 Database。
將 Celery 官方提供的 Database 連結加入上一篇文章的代碼中:
- # tasks.py
- from celery import Celery
- app = Celery('tasks',
- broker='redis://localhost:6379/0',
- backend='db+sqlite:///results.sqlite')
- @app.task
- def reverse(string):
- return string[::-1]
影片中使用的是 MySQL, 但我選用 SQLite 比較容易上手。
如果想用其他 Database 請參考這裡。
啟動 Celery:如果想用其他 Database 請參考這裡。
$ celery -A tasks worker --loglevel=info執行 Flask App:
>>> from tasks import * >>> reverse.delay('Anthony')
你將會得到與前一張相同的結果。唯一不同的是,資料夾中會出現 “results.sqlite”。
透過 DB Browser for SQLite 開啟。DB Browser for SQLite 可以透過它的 GitHub 下載。
透過 DB Browser for SQLite 開啟。DB Browser for SQLite 可以透過它的 GitHub 下載。
選擇 Browse Data,在資料表中可以看到影片中提到的 celery_taskmeta 和 celery_tasksetmeta。
下方欄位中就可以看到曾經執行的任務了。
修改 tasks.py:下方欄位中就可以看到曾經執行的任務了。
測試緩存器 :
- # tasks.py
- from celery import Celery
- import time
- app = Celery('tasks',
- broker='redis://localhost:6379/0',
- backend='db+sqlite:///results.sqlite')
- @app.task
- def reverse(string):
- time.sleep(10) # 延遲10秒
- return string[::-1]
終端機將會出現以下結果。
- >>> from tasks import *
- >>> result = reverse.delay('Anthony')
- >>> result.status # 10秒內輸入。因延遲10秒,所以未收到資料,因此顯示‘PENDING'
- 'PENDING'
- >>> result.status # 10秒後,記錄器已經收到資料,因此顯示‘SUCCESS'
- 'SUCCESS'
- >>> result = reverse.delay('Pretty Printed')
- >>> result.ready() # 未收到資料,因此顯示 False
- False
- >>> result.ready() # 已收到資料,因此顯示 Ture
- True
- >>> result.get() # 顯示收到的資料
- 'detnirP ytterP'
- >>>
輸入過程中可以同時觀察執行 Celery 的終端機,可以發現記錄器確實會延遲收到資訊,收到資料後變數狀態也會改變。
測試緩存的過程可能用文字敘述較難理解,可以直接觀看影片比較容易明白,該操作部分是從 4:47 開始。
接著可以重新開啟 SQLite 檢視剛剛輸入的資料。
測試緩存的過程可能用文字敘述較難理解,可以直接觀看影片比較容易明白,該操作部分是從 4:47 開始。
接著可以重新開啟 SQLite 檢視剛剛輸入的資料。
慚愧的說,使用 SQLite 是因為其他的資料庫都不太熟。應該會再找時間學學其他的資料庫。
Asynchronous Tasks in Python - Getting Started With Celery (1/4)
Asynchronous Tasks in Python - Celery Backend Tutorial (2/4)
Asynchronous Task in Flask Using Celery (3/4)
Flask, Celery & SQLAlchemy Example (4/4)
留言
張貼留言