1
resposta

Erro ao executar o "python3 twitter_hook.py"

Prezado, boa noite.

Esta ocorrendo o erro a seguir, ao tentar executar o codigopython3 twitter_hook.py

Erro:

Traceback (most recent call last):
  File "twitter_hook.py", line 59, in <module>
    for pg in TwitterHook("AluraOnline").run():
  File "twitter_hook.py", line 52, in run
    session = self.get_conn()
  File "/usr/local/lib/python3.8/dist-packages/airflow/hooks/http_hook.py", line 62, in get_conn
    conn = self.get_connection(self.http_conn_id)
  File "/usr/local/lib/python3.8/dist-packages/airflow/hooks/base_hook.py", line 87, in get_connection
    conn = random.choice(list(cls.get_connections(conn_id)))
  File "/usr/local/lib/python3.8/dist-packages/airflow/hooks/base_hook.py", line 83, in get_connections
    return secrets.get_connections(conn_id)
  File "/usr/local/lib/python3.8/dist-packages/airflow/secrets/__init__.py", line 59, in get_connections
    raise AirflowException("The conn_id `{0}` isn't defined".format(conn_id))
airflow.exceptions.AirflowException: The conn_id `twitter_default` isn't defined

Notei que ele reclama que a twitter_default não foi definida. Porém ela foi criada. Insira aqui a descrição dessa imagem para ajudar na acessibilidadeObrigado desde já!

1 resposta

Oi Lucas, como você está?

Peço desculpas pela demora em obter um retorno.

Por algum motivo desconhecido a linha de comando não está conseguindo identificar a conexão criada na interface. Sendo assim, exclua esta conexão e a crie novamente. Segue abaixo os parâmetros e os respectivos valores:

  • Conn Id: twitter_default
  • Cont Type: HTTP
  • Host: http://api.twitter.com
  • Extra: {"Authorization": "Bearer CONTEUDO_DO_TOKEN"}

Após isso, tente executar novamente o código do twitter_hook.

Caso o erro persista, tente criar a conexão via linha de comando, como mostro abaixo:

airflow connections add 'twitter_default' \
    --conn-type 'HTTP' \
    --conn-host 'http://api.twitter.com' \
    --conn-extra "{\"Authorization\": \"Bearer CONTEUDO_DO_TOKEN\"}"

Para confirmar se tudo ocorreu bem, digite:

airflow connections list

Irá aparecer na listagem a conexão twitter_default, como mostro abaixo:

Imagem com a tela do terminal que possui fundo preto e mostra a saída do comando “airflow connections list” e como resultado, tem uma tabela que mostra o nome da conexão, tipo da conexão, host, porta, se é ou não encriptada, e se tem alguma configuração extra. Neste resultado, a conexão “twitter_default” está marcada em vermelho para destacá-la, mostrando que a mesma foi criada com sucesso.

Antes de executar novamente o script, lembre-se de exportar a variável de ambiente AIRFLOW_HOME.

A título de curiosidade, caso queira saber mais sobre as conexões do Apache Airflow, recomendo o capítulo Managing Connections - Em português, Gerenciando conexões da documentação da biblioteca.

Observação: O conteúdo está em inglês, mas com o recurso de tradução de páginas do próprio navegador é possível realizar a tradução.

Qualquer dúvida fico à disposição.

Abraços e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software