분류 전체보기 1191

[Python] requests.exceptions.SSLError: [Errno 1] _ssl.c:510: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

개요 시스템을 사용하는 사용자 목록을 확인하기 위해 아래와 같은 코드를 이용해 api 요청을 보내고자 한다. import os import requests if __name__ == "__main__": HOST = 'www.example.com' token = 'TOKEN' headers = {'Authorization': 'token %s' % token} LIST_USER = os.path.join(HOST, 'api/users') r = requests.get(LIST_USER, headers=headers) 그러나 실행하니 requests.exceptions.SSLError 에러가 발생했다. 조치 1. 인증 비활성화 자체 서명한 인증서를 사용하여 인증서를 신뢰할 수 없을 때, 가장 간단한 조치 ..

Python 2022.08.10

[Slack] requests.post 시 큰따옴표 처리

개요 아래의 python 코드를 이용해 slack webhook을 전송하려고 한다. def send_message(name, message): url = "WEBHOOK_URL" header = {'Content-type': 'application/json'} icon_emoji = ":crying_cat_face:" channel = "# test_alarm" data = f'{{"channel": "{channel}", "username": "{name}", "text": "{message}", "icon_emoji": "{icon_emoji}"}}' # 메세지 전송 return requests.post(url, headers=header, data=data) 하지만 아래와 같이 호출해도 메시지를 수..

[Python] *args / ** kwargs

개요 파이썬 코드를 보다 보면 아래와 같이 *args, **kwargs를 사용하는 함수가 존재한다. def myFun1(*args): ... def myFun2(**kwargs): ... 어떤 의미인지, 어떤 용도로 사용하는지 알아보도록 한다. *args Arguments를 의미하며, 함수에서 개수가 정해지지 않은 여러 개(n개)의 인자를 받을 때 사용한다. 예로 들어, 아래와 같이 3개의 숫자를 더하는 함수를 정의했다. def add(x, y, z): print("sum:", x + y + z) add(10, 12, 13) 그리고 4개, 5개의 숫자를 더한 값을 계산할 필요도 있다고 해보자. add 함수는 3개의 인자만을 전달받도록 정의되었기 때문에 4개 이상의 인자를 받을 수 없다. 때문에 4개의 인..

Python 2022.08.08

[Airflow] Task 실패 시 Slack 알람 전송하기

개요 2022.08.05 - [Airflow] Slack Webhook 전송 글에서 Airflow DAG를 실행하여 Slack Webhook을 전송해보았다. 이제 이 코드를 이용해 DAG 실행 실패 시 알람을 받을 수 있도록 하고자 한다. Callbacks Callback은 지정된 task 또는 지정된 DAG의 모든 task의 상태 변화에 대해 동작하는 구성 요소이다. Callback을 사용하면 특정 Task가 실패했을 때나 성공했을 때 알림을 보내는 등의 동작을 구성할 수 있다. Airflow에서는 아래와 같은 Callback 유형을 사용할 수 있다. Callback Type Name Description on_success_callback Task 성공 시 호출된다. on_failure_callbac..

Apache Airflow 2022.08.07

[Python] import - 다른 경로에 위치한 모듈 가져오기

import 2022.05.28 - [import] 모듈 가져오기 2022.08.04 - [Python] import - 검색 순서 위 글에서는 모듈을 가져오는 방법과 검색 순서에 대해서 알아보았다. 그래서 다른 경로에 있는 python 모듈을 가져와 사용하려면 어떻게 해야 하는가? 파이썬에서는 경로를 나타내는 방법으로 상대 경로와 절대 경로가 존재하지만, 이 글에서는 단순하게 동일 경로에 있는 모듈 하위 경로에 있는 모듈, 상위 경로에 있는 모듈을 가져와보도록 한다. 아래는 바쁜 현대인을 위한 요약이다. 동일 경로 : 단순 import 하위 경로 : from import 상위 경로/다른 경로 : sys.path.append('PATH') 동일 경로 먼저 아래 구조의 프로젝트가 있다고 하자. expr/p..

Python 2022.08.06

[Airflow] Slack Webhook 전송

개요 Airflow DAG 실패 시 Slack 알람을 받고자 한다. 이를 위해 먼저 Airflow DAG를 통해 Slack Webhook을 보내보도록 한다. 이 글에서는 Airflow Slack 관련 Operator는 사용하지 않을 것이다. 따라서 Slack Operator를 따로 설치하거나 인증을 위한 Slack Token 등을 따로 생성하는 내용이 포함되어 있지 않다. 알람을 받은 Slack 워크스페이스와 imcoming webhook은 이미 생성해두었다고 가정한다. 필요시 아래 글을 참조한다. 2021.05.16 - slack에 Webhook 추가 SlackWebhook.py 작성 Slack Webhook을 전송하는 모듈을 작성한다. 이전에 2021.05.16 - python 코드 작성에서 작성했던..

Apache Airflow 2022.08.05

[Python] import - 검색 순서

import 2022.05.28 - [import] 모듈 가져오기에서 다른 모듈을 가져와 사용하는 방법을 정리했다. pip, conda 등으로 설치한 모듈은 import 문으로 사용하면 되는데, 직접 작성한 Python 모듈은 어떻게 가져와야 할까? 먼저 import 문은 아래 목록을 순서대로 탐색하며 가져올 모듈을 찾는다. sys.modules built-in modules sys.path 순서대로 탐색하여 찾는 모듈과 패키지가 없으면 ModuleNotFoundError가 발생한다. sys.modules 파이썬이 모듈이나 패키지를 찾기 위해 가장 먼저 확인하는 곳. 현재 프로젝트에서 import 해서 사용하고 있는 모듈과 패키지를 저장한 dictionary다. 한 번 import 된 모듈과 패키지를 다..

Python 2022.08.04

[Airflow] Task 간 의존성 설정

Task 간 의존성 여러 개의 Task가 존재할 때 의존성을 결정하는 방법을 정리한다. set_downstream() / set_upstream() Task 간 의존성은 set_downstream 또는 set_upstream과 같은 함수로 나타낼 수 있다. set_downstream : Task 실행 후에 수행할 task를 설정한다. set_upstream : Task 실행 전에 수행할 task를 설정한다. 다음과 같이 두 개의 Task를 가진 DAG가 존재한다고 하자. # DAG 인스턴스화 dag = DAG( 'helloworld', default_args=default_args, description='print "hello, world!"', schedule_interval=timedelta(day..

Apache Airflow 2022.08.03

[S3/SQS] S3에 생성된 데이터를 SQS에 쌓기

개요 시간마다 S3에 적재되는 데이터를 지속적으로 처리하고자 한다. 이를 위해 S3 이벤트 알림 옵션을 사용하여 SQS에 데이터를 전달하는 방식으로 구성하려고 한다. 구성 방법을 정리해둔다. SQS 생성 사용할 SQS를 생성한다. 1. AWS Console > SQS > 대기열 생성 클릭 2. SQS 설정 유형 : 사용 목적에 맞게 Standard 또는 FIFO를 선택한다. 여기서는 Standard로 사용한다. Name : SQS의 이름이다. 구성 : 큐가 메시지를 어떻게 처리할 지에 대한 설정을 구성한다. 여기서는 기본값으로 사용한다. 표시 제한 시간 : 대기열에서 수신한 메시지가 다른 메시지 소비자에게 보이지 않게 되는 시간 메시지 보존 기간 : 큐에 저장된 메시지의 보존 기간. 설정한 기간만큼 보관..

AWS 2022.08.02

[AWS] S3 경로 내 용량 또는 파일 개수 확인

개요 S3 버킷의 특정 경로 아래에 존재하는 모든 파일의 개수와 용량을 확인하고 싶다. 세 가지 정도로 방법을 정리해둔다. AWS Concole 1. 확인하고자 하는 경로를 선택하고 작업 > 총 크기 계산을 클릭한다. 2. 결과 화면에서 지정한 경로의 총 객체 수와 크기를 확인할 수 있다. CloudBerry Explorer for Amazon s3 1. 클라우드 베리에서 정보를 확인하고자 하는 버킷/경로를 우클릭한 후, Properties를 클릭한다. 2. 결과에서 총 파일 수와 경로 수, 그리고 크기를 확인할 수 있다. 단, 여러 경로를 한꺼번에 확인할 수는 없는 것으로 보인다. AWS CLI AWS CLI의 s3 ls 옵션 중 --summarize은 객체 수와 총크기를 표시하는 옵션이다. 특정 경로..

AWS 2022.08.01