1. 程式人生 > 其它 >celery非同步發簡訊(容聯雲)

celery非同步發簡訊(容聯雲)

技術標籤: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非同步