인프런 커뮤니티 질문&답변

박경준님의 프로필 이미지
박경준

작성한 질문수

Airflow 마스터 클래스

Email Operator로 메일 전송하기

EmailOperator OSError

작성

·

95

0

안녕하세요. EmailOperator 실습과정에서 오류가 발생해서 질문을 남깁니다!

설정을 한 후 실행을 하니. OSError: [Errno 99] Cannot assign requested address 가 발생해서 도움이 필요합니다..!

KakaoTalk_Photo_2024-08-17-15-38-31.jpeg

docker-compose.yaml 파일에 이렇게 설정을 하였고,

image.png

에러는 다음과 같습니다!

답변 3

1

김현진님의 프로필 이미지
김현진
지식공유자

안녕하세요 박경준님!

일단 설정은 맞게 하신것 같아요.

그렇다면 안될 이유는 없어보이기는 하는데..

혹시 구글 이메일 설정도 잘 하셨을까요? (IMAP 사용 설정)

 

만약 설정에 문제가 없는데 안된다면 원인을 좀 차야봐야 합니다.

우선 worker 컨테이너에 들어간 후 smtp.gmail.com:587 로 접속이 되는지 확인해서 답글 부탁드려요.

$ sudo docker ps 

명령으로 컨테이너 목록 확인 후 worker 컨테이너에 접속

$ sudo docker exec -it {worker} bash 

접속하면 아래처럼 nc -v smtp.gmail.com 587

명령하면 Connection Success가 떠야 합니다.

image.png

 

 

0

박경준님의 프로필 이미지
박경준
질문자

주말에 답변 감사합니다!

구글 이메일 설정, Connection Success도 나오는데 잘 안되네요 .. 😂

강사님이 올려주신 강의와 다른 점은 앱 비밀번호를 생성할 때 보안 관련해서 구글이 변경을 했는지 '메일'과 같은 타입을 설정을 하지않고 바로 앱 비밀번호의 명칭만 설정하면 16자리가 나옵니다!

 

스크린샷 2024-08-18 오후 1.04.05.png스크린샷 2024-08-18 오후 1.14.50.pngKakaoTalk_Photo_2024-08-18-13-13-40.jpeg

 

 

김현진님의 프로필 이미지
김현진
지식공유자

네 구글 앱 비밀번호는 16자리 생성된거 그냥 사용하시면 되요.

저도 airflow 신규 버전에서 해봤는데 잘 되는 건 확인했어요 ^^

그러면 worker 컨테이너 안에서 SMTP 메일 보내기를 직접 한번 해보죠.

아래처럼 해보시겠어요?

 

% python 
>>> import smtplib
>>> smtp = smtplib.SMTP('smtp.gmail.com', 587)
>>> smtp.starttls()
>>> smtp.login('xxxx@gmail.com', '앱 비밀번호 16자리')

여기까지 잘 되시면 앱 패스워드로 로그인하는 것까지는 문제 없는 것입니다.

한번 해보시고 알려주세요!

 

 

박경준님의 프로필 이미지
박경준
질문자

강사님! 처음부터 강의를 다시 보면서 진행해보니까 email operator가 작동함을 확인했습니다! 아무래도 docker-compose.yaml 파일 작성을 잘 못 한것 같습니다..!😅

답변해주셔서 감사합니다! 완강까지 화이팅해보겠습니다 ~ !

김현진님의 프로필 이미지
김현진
지식공유자

오잉 잘 되시니 다행이네요.

airflow 버전이 많이 올라가긴 했는데 2.9.1 까지 테스트 해봤을 때는 강의 내용이 모두 이상없이 잘 동작합니다. 남은 부분도 수강하시는데 문제 없을거에요.

그럼 화이팅입니다!

0

안녕하세요, 인프런 AI 인턴입니다.

박경준님, OSError: [Errno 99] Cannot assign requested address 발생 이슈와 관련하여 말씀드릴 수 있는 사항이 있습니다. 이러한 오류는 일반적으로 네트워크 주소가 올바르게 할당되지 않았을 때 발생합니다. 예를 들어, EmailOperator가 이메일을 전송하려 할 때 SMTP 서버에 연결할 수 없는 상황에서 이 오류가 발생할 수 있습니다.

최근 유사한 문제를 경험한 다른 학습자의 경우를 참고해 보았을 때, 몇 가지 가능한 해결 방법이 있습니다:
1. SMTP 서버 설정: smtp.gmail.com과 포트 587은 올바른 설정으로 보이지만, 이메일 계정의 SMTP 접근 설정을 확인해야 합니다. Gmail의 경우, “보안 수준이 낮은 앱 허용” 설정을 활성화하거나, 2단계 인증을 사용하는 경우 앱 비밀번호를 생성해서 사용해야 합니다.
2. Airflow SMTP 연결: Airflow 2.x 버전에서는 airflow.cfg 파일 또는 UI를 통해 SMTP 설정을 진행할 수 있습니다. 특히 airflow.cfg에서 SMTP 섹션에 관련 설정이 올바르게 구성되어 있는지 다시 확인해 보세요.
3. Docker 네트워크 설정: Docker에서 실행하는 경우, 네트워크 설정이 올바르게 구성되어 있어야 합니다. docker-compose.yaml 파일에서 서비스 간 네트워크 설정에 문제가 없는지 확인해야 합니다.

제공하신 정보와 유사한 사례로, Email Operator로 메일 전송하기 실패와 관련된 토론에서 다루어진 바와 같이, SMTP 포트 설정이 잘못됐거나 Airflow가 SMTP 서버에 올바르게 연결하지 못하는 경우가 있습니다. 비슷한 오류를 겪고 계신 상황이라면, 해당 사례가 조금이나마 도움이 될 수 있을 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

박경준님의 프로필 이미지
박경준

작성한 질문수

질문하기