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.
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
-
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;
-
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;
-
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:
**
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
Depois que a tarefa for executada com sucesso, será gerado o id da tarefa correspondente, que pode ser consultado no redis. O
resultado da execução é obtido através do objeto AsyncResult do aipo