Implementação de tarefas assíncronas de aipo

Não fui amado por ninguém. Se alguém me tratar bem, pensarei que encontrei a pessoa certa. Se estou perturbado, fico muito envergonhado.

Django aipo

1. Celery é uma fila de tarefas assíncronas distribuídas.

Insira a descrição da imagem aqui

2. Use cenários:

Aplicação Web: Quando um usuário leva muito tempo para concluir uma operação no site, podemos passar esta operação para o Celery para executá-la e devolvê-la diretamente ao usuário. Após a execução do Celery, o usuário será notificado para melhorar a simultaneidade de o site e a experiência do usuário.

Incluem principalmente: corretor de middleware de mensagem, trabalhador da unidade de execução de tarefa, back-end de armazenamento de resultados

O módulo de tarefas inclui tarefas de cronometragem de ritmo de aipo e tarefas assíncronas tarefa assíncrona

  1. As tarefas assíncronas são geralmente acionadas na lógica de negócios e enviadas para a fila de mensagens, enquanto as tarefas cronometradas são enviadas periodicamente para a fila de mensagens pelo processo Celery Beat;

  2. O Worker da unidade de execução da tarefa monitora a fila de mensagens em tempo real para obter a execução da tarefa na fila;

  3. Depois que Woker terminar a tarefa, salve o resultado no Backend;

    trabalhador de aipo -A cdscp -l debug

O significado de cada parâmetro:

trabalhador: a função que representa a inicialização é trabalho

-A: caminho do projeto cdscp

-l: nível de log de inicialização

Inicie o trabalhador, mas também precisa adicionar tarefas ao trabalhador por meio de atraso ou apply_async

3. Exemplo de demonstração:

** Estilo arrojado
celery_task.py

import celery
import time

app = celery.Celery("celery_test",broker='redis://:@127.0.0.1:6379/0',backend='redis://:@127.0.0.1:6379/1')

@app.task
def send_email(param):
    time.sleep(5)
    print '向{}发送邮件'.format(param)
    return "ok"


@app.task
def send_msg(param):
    time.sleep(5)
    print '向{}发送短信'.format(param)
    return "ok"

produza_task.py

from celety_task import send_email, send_msg

result = send_email.delay('王子')
print result.id


result = send_msg.delay('王子')
print result.id

get_result.py

from celery.result import AsyncResult
from celety_task import app

ansyc_result = AsyncResult(id='f07403ed-90e0-42a1-b1bb-a2d75869495b', app=app)

if ansyc_result.successful():
    result = ansyc_result.get()
    print result
elif ansyc_result.failed():
    print "failed"
elif ansyc_result.status == 'pending':
    print 'pending'
elif ansyc_result.status == 'retry':
    print 'retry'
elif ansyc_result.status == 'started':
    print 'started'
celery worker -A celety_task -l info

A figura a seguir aparece, indicando que o trabalhador iniciou com sucesso
Insira a descrição da imagem aqui

Depois que a tarefa for executada com sucesso, será gerado o id da tarefa correspondente, que pode ser consultado no redis. O
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
resultado da execução é obtido através do objeto AsyncResult do aipo
Insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/qq_37304462/article/details/113920923
Recomendado
Clasificación