1. 程式人生 > >Python--Django使用celery實現非同步任務

Python--Django使用celery實現非同步任務

Django使用celery實現非同步任務

celery使用: 以傳送簡訊為例

  • 在專案目錄下下建立celery_tasks用於儲存celery非同步任務。
  • 在celery_tasks目錄下建立config.py檔案,用於儲存celery的配置資訊
# redis儲存
broker_url = "redis://127.0.0.1/14"
  • 在celery_tasks目錄下建立main.py檔案,用於作為celery的啟動檔案
from celery import Celery

# 為celery使用django配置檔案進行設定
import
os # xiamgmu.settings.dev表示專案的配置檔案路徑 if not os.getenv('DJANGO_SETTINGS_MODULE'): os.environ['DJANGO_SETTINGS_MODULE'] = 'xiamgmu.settings.dev' # 建立celery應用 name表示應用名 app = Celery('name') # 匯入celery配置 app.config_from_object('celery_tasks.config') # 自動註冊celery任務 app.autodiscover_tasks(['celery_tasks.sms'
]) # 下面指令用於啟動celery # celery -A celery_tasks.main worker -l info
  • 在celery_tasks目錄下建立sms資料夾,實現傳送簡訊的方法
  • 在sms資料夾下建立tasks.py檔案
from libs.yuntongxun.sms import CCP
from celery_tasks.main import app

# CCP使用雲通訊傳送
@app.task(name='send_sms_code')
def send_sms_code(mobile, sms_code):
    ccp =
CCP() # '1'表示有效時間1分鐘,1表示模板1 ccp.send_template_sms(mobile, [sms_code, '1'], 1)
  • 配置完成在檢視view中可以呼叫send_sms_code方法並傳參

使用celery解決可能由於網路延時問題造成的堵塞,實現非同步任務