CS

    [FastAPI]FastAPI의 비동기 함수 동작 방식

    앞선 글 2023.03.21 - [CS/Python] - FastAPI의 동기 함수 동작 방식에서 FastAPI는 서버 Blocking을 막기 위해 동기 함수를 스레드풀로 넘겨 작업한다는 것을 확인했습니다. 그럼 비동기 함수는 어떻게 동작할까요? FastAPI를 만든 tiangolo가 한 이슈에 단 답변으로 이를 확인할 수 있습니다. Any async function can only be run on the main thread, on the main event loop. There's no other way around in Python. So, if there's an async path operation (route) function or an async dependency function, kno..

    [FastAPI]FastAPI의 동기 함수 동작 방식

    일반적인 파이썬 코드에서는 동기 함수는 순서대로 작동하고, 비동기 함수는 병렬적으로 작동합니다. 그럼 FastAPI 내의 동기 함수만을 이용한 엔드포인트에 다수의 HTTP 요청을 보내면 동기 함수를 실행하느라 서버가 요청을 받지 못하는 상황이 될 것 같다는 의문이 들었습니다. 의문을 해결하기 위해 내부적으로 FastAPI가 어떤 식으로 동작하는지 알아보겠습니다. 우선 다음과 같이 작성된 동기 함수로 작성된 엔드포인트에 `curl`을 이용하여 두 번의 HTTP 요청을 보내보겠습니다. @app.get("/sync") def sync(): print("Hello") time.sleep(2) print("Bye") # In run_sync.txt url = "http://127.0.0.1:8000/sync" u..

    [Selenium] 크롬의 구글 이미지 검색 결과가 오래된 버전의 크롬으로 로드되는 경우 해결책

    상황 최신 버전의 크롬 드라이브를 사용하였음에도 불구하고 Selnium을 이용하여 구글 이미지 검색 결과 페이지에 진입시 오래된 버전(현재의 스크롤 다운 방식이 아닌 ‘다음 결과’ 버튼 방식)의 크롬으로 페이지 로드 원인 user-agent에 크롬과 관련된 인자가 포함되지 않은 것이 원인으로 보임 해결책 Selenium의 user-agent로 크롬과 관련된 인자(예: Chrome/105.0.0.0)를 추가 잘못된 내용, 오타, 부정확한 문장 등 어떤 피드백이든 환영합니다. 감사합니다.

    [Docker] WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested

    상황 M1 맥북에서 airflow 도커 이미지를 이용하였을 때 오류가 발생하며 작동 불가 원인 이전에 작성한 M1맥북-GKE 오류가 발생한 원인과는 반대로 amd64 플랫폼에서 빌드된 이미지를 arm64 플랫폼에서 이용하려 했기 때문에 발생한 문제이다. [K8s] standard_init_linux.go:190: exec user process caused "exec format error" 상황 M1 맥북에서 빌드한 이미지를 GKE에서 이용하였을 때 오류가 발생하며 파드가 정상적으로 시작되지 않는 문제 원인 도커 이미지가 빌드된 플랫폼과 컨테이너가 실행될 플랫폼이 달라서 생 tigris-data-science.tistory.com 해결책 이미지를 빌드한 플랫폼이 amd64임을 명시하여 이미지를 사용한다..

    [K8s] standard_init_linux.go:190: exec user process caused "exec format error"

    상황 M1 맥북에서 빌드한 이미지를 GKE에서 이용하였을 때 오류가 발생하며 파드가 정상적으로 시작되지 않는 문제 원인 도커 이미지가 빌드된 플랫폼과 컨테이너가 실행될 플랫폼이 달라서 생기는 문제이다. uname -a 명령어를 이용해 플랫폼을 확인해보면 M1 맥북은 arm64, GKE에서 노드로 사용되는 VM은 amd64(x86_64) 임을 확인할 수 있다. 따라서 이미지를 빌드할 때 이미지가 사용될 플랫폼을 지정해주거나, 컨테이너를 실행할 때 이미지가 빌드된 플랫폼을 알려주는 방식으로 문제를 해결할 수 있다. 추가적으로 Docker 메뉴얼에 애플 실리콘과 관련된 문제에 관련된 내용이 존재한다. Some images do not support the ARM64 architecture. You can ad..

    [Server] Web Server, WAS and CGI

    Summary Web Server는 Client의 요청에 따라 정적인 컨텐츠를 제공하는 서버 Web Server 단독으로는 동적인 컨텐츠를 제공할 수 없기 때문에 Application을 실행할 수 있는 Container와 Web Server를 함께 패키징한 소프트웨어 Web Application Server가 없는 Application들은 CGI 규약을 이용해 만들어진 CGI 서버를 이용해 Web Server와 Application이 커뮤니케이션 가능 Web Server Web Server는 사용자의 HTTP 요청에 따라 HTML, CSS, JS, 이미지 등의 정적인 컨텐츠를 제공하는 서버를 말합니다. 개발자들에게 익숙한 Apache, Nginx 등이 대표적인 웹서버입니다. WAS(Web Applicat..

    [AWS] CLI 환경에서 MFA 인증하기

    MFA가 설정되어 있는 경우 CLI 환경에서 AWS 관련 작업을 진행하기 위해서는 자격 증명이 되어야 합니다. 이번 글에서는 세션 토큰을 이용하여 임시로 보안 자격 증명을 받는 방법을 알아보겠습니다. (Optional) 현재 사용 중인 IAM 사용자/역할 확인하기 $ aws sts get-caller-identity 아래 명령어를 통해 임시 세션 토큰 발급 # 기존 IAM 사용자 $ aws sts get-session-token --serial-number --token-code # 기존 IAM 사용자가 아닌 다른 사용자를 지정해야할 경우 $ aws --profile [별칭] sts get-session-token --serial-number --token-code MAF가 등록된 장치의 ARN과 MFA..

    [Python] Class에서 특정 문자열로 시작하는 Method 찾기

    파이썬에서 Class 내에서 특정 문자열로 시작하는 이름을 가진 Method를 확인하는 방법을 알아보겠습니다. 사용 함수 dir() dir() 함수를 이용하면 입력된 Class 또는 Instance 내 모든 Attribute의 이름이 담긴 리스트가 반환됩니다. callable() Callable 여부에 따라 주어진 Attribute가 Class / Instance Variable와 Method 중 어느 것에 해당하는지 식별할 수 있습니다. Example 다음과 같이 정의된 Class가 존재한다고 가정하겠습니다. class Example: class_variable = 5 def __init__(self): self.instance_varibale = 3 def say_hello(self): return ..

    [Linux] ps 명령어

    [Linux] ps 명령어

    Process Status의 약어를 이름으로 사용한 ps 명령어를 사용하면 현재 구동 중인 프로세스 정보를 확인할 수 있습니다. 명령어와 함께 사용되는 주요 옵션들은 다음과 같습니다. -e: 현재 사용자뿐만 아니라 다른 사용자들이 구동시킨 모든 프로세스를 보여줍니다. (즉, -e 옵션이 없다면 ps 명령어는 현재 사용자(Shell)이 실행 중인 프로세스만 보여줍니다.) -f: 보다 상세한 정보를 보여줍니다. (Full format) -l: -f 보다 더 상세한 정보를 보여줍니다. (Long format) ps -efl 명령어를 통해 출력되는 결과의 각 필드의 의미는 다음과 같습니다. (실행 환경마다 필드의 이름 혹은 출력 순서가 다를 수 있습니다.) F: 프로세스 플래그. 4: used super-use..

    [Git] Squash and Merge 후 Rebase를 할 때 발생하는 문제

    [Git] Squash and Merge 후 Rebase를 할 때 발생하는 문제

    Squash and Merge(이하 Squash Merge) 이후 Branch간 충돌로 인해 Rebase가 불가능한 경우가 있습니다. 충돌이 일어나는 이유와 해결 방법을 알아보겠습니다. 문제 상황 우선 Branch1에서 B, C commit 이후 다른 작업을 위해 Branch2를 만든 후 Branch 별로 각기 다른 작업을 진행했다고 가정하겠습니다. Branch1의 작업이 끝나 Squash Merge 후 Main 브랜치를 Fast-Forward했습니다. Branch2도 작업이 끝났습니다. 깔끔한 Commit history를 위해 Rebase를 진행하려고 합니다. git checkout branch2 git rebase main 이렇듯 의식의 흐름대로 Rebase를 진행하면 여러분은 빨간색 글씨로 적힌 충..