celery的介紹
celery有三個核心的概念:
- 任務的發出者(需要發郵件的一方),我們項目的代碼就相當於發出者,
- 中間是一個任務隊列(中間人broker),這里我們使用Redis來承擔任務隊列的作用
- 任務的處理者(就是幫助發郵件的這就是worker),
邏輯:
- 首先任務發出者,發出任務之后,不能直接告訴任務的處理者,要先到任務隊列,
- 任務的處理者會監聽任務隊列,有的話就執行,
- celery本身是沒有提供任務隊列的功能的,需要借助一個rabbitMQ數據庫,或者Redis,都是可以作為中間人的,這里我們使用Redis來承擔任務隊列的作用,
- 這樣的設計就不會阻塞了,
安裝celery,
- pip install celery
- 安裝redis:pip install redis 驗證redis是否安裝成功,在cmd窗口輸入python命令之后再輸入import redis,如果沒有出現模塊不存在則表示安裝成功。
怎么使用celery?
- 在項目目錄下新建一個包,celery_tasks,新建一個文件,tasks.py,,
- 我的處理者是在虛擬機的Linux上面,
- 在這個地方啟動任務,還需要把項目代碼也放到上面去,
- 並且需要在虛擬機上也要安裝celery,然后才能啟動,
- 1,workon lq_py3(虛擬環境名稱)這就是進入虛擬環境工作了,
- 2,pip freeze,查看虛擬環境下面安裝了那些包
- 3,pip install celery,安裝celery
- 安裝django1.11 pip install django==1.11.7 -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
- 啟動命令,在進入項目里面,cd ~/桌面/dailyfresh/
- 然后執行:celery -A celery_tasks.tasks worker -l info
##################################
報錯信息:Error: Unable to load celery application.
第一步:檢查redis有沒有啟動:
sudo redis-server /etc/redis/redis.conf,啟動服務,
ps aux | grep redis,查看是否服務啟動
redis-cli -h 192.168.100.128,啟動客戶端,
AUTH ### 設置密碼,
現在報了另一個錯誤了:ImportError: No module named 'django_redis'
第二步:安裝
進入虛擬環境,workon lq_py3
pip install django-redis
pip freeze ,查看是否安裝了,
安裝好了,再次執行:celery -A celery_tasks.tasks worker -l info
報錯了:ERROR/MainProcess] consumer: Cannot connect to redis://:**@192.168.80.129:6379/8: Error 111 connecting to 192.168.80.129:6379. Connection refused.
需要修改一下redis的配置,
第三步,修改celery的配置信息,
在task里面,ip錯誤了,還是因為虛擬機的ip變動的問題,