celery非同步發簡訊(容聯雲)
阿新 • • 發佈:2021-02-05
技術標籤:python
一,在python中,建立一個導包檔案,例如:celery_task
二,再建立一個py檔案,例如:mian.py
三,在py檔案中新增基本配置
例:
import os
import sys
from celery import Celery
#執行celery命令時,需要進入CELERY_BASEDIR目錄執行
#elery專案中的所有導包地址,都是已CELERY_BASE_DIR未基準設定
CELERY_BASE_DIR = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, CELERY_BASE_DIR) # 增加導包路徑
#定義celery例項,
#需要的引數:例項名(可以隨便取)
#放到redis中:broker(存任務), backend(存任務結果)
app = Celery('opwf', broker='redis://127.0.0.1:6379/14', backend='redis://127.0.0.1:6379/15')
'''
引數介紹:
main=None, loader=None, backend=None,
amqp=None, events=None, log=None, control=None,
set_as_current=True, tasks=None, broker=None, include=None,
changes=None, config_source=None, fixups=None, task_cls=None,
autofinalize=True, namespace=None, strict_typing=True,
**kwargs
'''
#給這個函式裝飾上非同步
@app.task
def send_sms(tid,mobile,datas):
#需要celery非同步執行的程式碼,例如:發簡訊,發郵件等
#例如簡訊:
from ronglian_sms_sdk import SmsSDK
#安裝SDK
#pip install ronglian_sms_sdk
accountSid = '8aaf0708762cb1cf017712ffd893508b'
#說明:主賬號,登陸雲通訊網站後,可在控制檯首頁中看到開發者主賬號ACCOUNT SID。
accountToken = 'bbbbaf29cbd84fa4ac9d1236345d0e5e'
#說明:主賬號Token,登陸雲通訊網站後,可在控制檯首頁中看到開發者主賬號AUTH TOKEN。
appId = '8aaf0708762cb1cf017712ffd9615091'
#請使用管理控制檯中已建立應用的APPID。
#初始化SDK
sdk = SmsSDK(accountSid, accountToken, appId)
#tid:模板編號,測試時預設是1
#mobile:是分給誰,寫手機號,字串型別
#datas:傳送的內容,例('驗證碼','幾分鐘內輸入')
res = sdk.sendMessage(tid, mobile, datas)
print(res)
return res
四,在需要執行的py檔案中,匯入celery非同步
例:
from celery_task.mian import send_sms
#啟動celery命令:celery -A 建立的celery檔案.py檔案,例celery_task.mian worker -l info
#先啟動 celery,直接在命令列中執行
#celery -A celery_task.mian worker -l info
#用celery執行傳送簡訊,傳遞引數
send_sms.delay('1','13996743411',('8888','2'))
五,需要避免的坑
導包的坑
1,當celery非同步啟動時,可以檢視啟動的導包路徑
2,再看自己的再檔案中的導包路徑
3,對比兩個的路徑是否一致,如果不一致,則無法完成celery非同步