Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
Esta página fornece passos de resolução de problemas e informações para problemas comuns com o acionador do Airflow.
Operações de bloqueio no acionador
As tarefas assíncronas podem, ocasionalmente, ficar bloqueadas nos acionadores. Na maioria dos casos, os problemas resultam de recursos de acionadores insuficientes ou de problemas com o código do operador assíncrono personalizado.
Os registos de acionadores apresentam mensagens de aviso que podem ajudar a identificar as causas essenciais da diminuição do desempenho dos acionadores. Existem dois avisos importantes a ter em atenção.
Discussão assíncrona bloqueada
Triggerer's async thread was blocked for 1.2 seconds, likely due to the highly utilized environment.
Este aviso indica problemas de desempenho devido a um volume elevado de tarefas assíncronas.
Solução: para resolver este problema, atribua mais recursos aos acionadores, reduza o número de tarefas adiadas que são executadas ao mesmo tempo ou aumente o número de acionadores no seu ambiente. Tenha em atenção que, embora os acionadores processem tarefas adiáveis, os trabalhadores são responsáveis por iniciar e, eventualmente, concluir cada tarefa. Se estiver a ajustar o número de acionadores, considere também dimensionar o número de instâncias de trabalho.
Uma tarefa específica bloqueou a discussão assíncrona.
WARNING - Executing <Task finished coro=<TriggerRunner.run_trigger() done, defined at /opt/***/***/jobs/my-custom-code.py:609> result=None> took 0.401 second
Este aviso aponta para um fragmento específico de código do operador executado pelo Cloud Composer. Por definição, os acionadores devem basear-se na biblioteca
asyncio
para executar operações em segundo plano. Uma implementação personalizada de um acionador pode não cumprir corretamente os contratosasyncio
(por exemplo, devido à utilização incorreta das palavras-chaveawait
easync
no código Python).Solução: inspecione o código comunicado pelo aviso e verifique se a operação assíncrona está implementada corretamente.
Demasiados acionadores
O número de tarefas adiadas é visível na métrica task_count
, que também é apresentada no painel de controlo de monitorização do seu ambiente. Cada acionador cria alguns recursos, como ligações a recursos externos, que consomem memória.

Os gráficos de consumo de memória e CPU indicam que os recursos insuficientes causam reinícios porque a sondagem de atividade falha devido à falta de sinais de pulsação:

Solução: para resolver este problema, atribua mais recursos aos acionadores, reduza o número de tarefas adiadas que são executadas ao mesmo tempo ou aumente o número de acionadores no seu ambiente.
Falha de um worker do Airflow durante a execução do callback
Depois de o acionador terminar a execução, o controlo regressa a um worker do Airflow, que executa um método de retorno de chamada através de um espaço de execução. Esta fase é controlada pelo Celery Executor e, por isso, aplicam-se os limites de configuração e de recursos correspondentes (como parallelism
ou worker_concurrency
).
Se o método de retorno de chamada falhar no worker do Airflow, o worker falha ou o worker que executa o método é reiniciado, a tarefa é marcada como FAILED
. Neste caso, a operação de nova tentativa volta a executar toda a tarefa e não apenas o método de retorno de chamada.
Repetição infinita num acionador
É possível implementar um operador de acionador personalizado de forma a bloquear completamente o ciclo do acionador principal, para que apenas o acionador danificado seja executado no momento. Neste caso, é gerado um aviso nos registos do acionador após a conclusão do acionador problemático.
Classe de acionador não encontrada
Uma vez que a pasta DAGs não está sincronizada com o acionador do Airflow, o código do acionador incorporado está em falta quando o acionador é executado. O erro é gerado nos registos da tarefa com falha:
ImportError: Module "PACKAGE_NAME" does not define a "CLASS_NAME" attribute/
class
Solução: importe o código em falta do PyPI.
Mensagem de aviso sobre o acionador na IU do Airflow
Em alguns casos, depois de o acionador ser desativado, pode ver a seguinte mensagem de aviso na IU do Airflow:
The triggerer does not appear to be running. Last heartbeat was received
4 hours ago. Triggers will not run, and any deferred operator will remain
deferred until it times out or fails.
O Airflow pode apresentar esta mensagem porque permanecem acionadores incompletos na base de dados do Airflow. Normalmente, esta mensagem significa que o acionador foi desativado antes de todos os acionadores serem concluídos no seu ambiente.
Pode ver todos os acionadores que estão a ser executados no ambiente verificando a página
Procurar > Acionadores na IU do Airflow (a função Admin
é
obrigatória).
Soluções:
- Ative novamente o acionador e aguarde que as tarefas adiadas sejam concluídas.
- Aceda à base de dados do Airflow e elimine os acionadores incompletos manualmente.
As tarefas permanecem no estado adiado após a desativação do acionador
Quando o acionador está desativado, as tarefas que já se encontram no estado diferido permanecem neste estado até o limite de tempo ser atingido. Este limite de tempo pode ser infinito, dependendo da configuração do Airflow e do DAG.
Use uma das seguintes soluções:
- Marcar manualmente as tarefas como falhadas.
- Permitir que o acionador conclua as tarefas.
Recomendamos que desative o acionador apenas se o seu ambiente não executar nenhum operador ou tarefa adiada e todas as tarefas adiadas estiverem concluídas.