Python Cellery非同期タスクのキューの使い方解析


Cleryは、非同期的なタスク・キュー(分散型タスク・キューとも呼ばれる)であり、簡単で柔軟で信頼性の高い分散システムは、大量のメッセージを処理しながら、このようなシステムを維持するために必要なツールを提供する。
エクセルのメリット
1:簡単で、使いやすく、設定ファイルは不要です。
2:高使用、タスクの実行に失敗したり、実行中に連続中断が発生しました。エクセルは自動的にタスクの再実行を試みることができます。
3:快速で、一つのプロセスのcelleryは毎分100万個のタスクを処理できます。
4:フレキシブルで、ほとんどエクセルの各コンポーネントが拡張されます。
セルの応用シーン
1:非同期にメールを送る場合、メールなどの時間がかかる操作は、この時にエクセルにタスクを提出してください。ワーカーがメールで操作します。
2:いくつかは大量のインターフェースの任務を走って、時間がかかります。非同期の任務もできます。
3:タイミングスケジュールタスク
CelryはDjangoと一緒に使用します(メールを送るのを例にして)
プロジェクトから独立してパッケージを新規作成します。
パッケージにsmsというパッケージを新規作成します。
新しいtasky.pyファイルを作成します

#       
from utils.ytx_sdk.sendSMS import CCP
from celery_tasks.main import app

#        ,        celery   
@app.task
def send_sms_code(mobile,code,expires,template_id):
  try:
    # CCP.sendTemplateSMS(mobile,code,expires,template_id)
    print(code)
  except:
    return '      '
パッケージ内に新しいconfig.pyを作成します。
内容は以下の通りです。仕事の消費者はワーカーです。Celry自身はキューサービスを提供しないので、RedisまたはRabbiitMQでキューサービスを実現することを推奨します。)
ハ指定代理人列=>redis
ブロガー_url='redis://127.0.0.1:6379/15'
packageパッケージに新しいmain.pyを作成します。
内容は以下の通りです。(taskをエクセル応用に登録する必要があります。)

#       
from celery import Celery
#  celery  django        
import os
if not os.getenv('DJANGO_SETTINGS_MODULE'):
  os.environ['DJANGO_SETTINGS_MODULE'] = 'yinyue.settings.dev'
#   celery  
app = Celery('yinyue')
#   celery  
app.config_from_object('celery_tasks.config')
#     celery  
app.autodiscover_tasks([
  'celery_tasks.sms'
])
djangoフレーム対応モジュールのビューで使用します。
𔽣呼び出しcelleryのタスク:タスク名.delay(パラメータ)
send_sms_code.delay(mobile,code,constants.SMS_コード.EXPIRES/60,1)
起動celleryサービス:cell y-A cellery_taskys.main worker-l info
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。