HTTP 헤더에 부분에 Connection 키라는 값 중 Keep-alive라는 옵션이 있음.
이것이 무엇인지 http를 사용하는데 대한 역할과 어떤 상황에서 사용되는지 알아보기
HTTP 헤더의 Connection은 클라이언트와 서버 간의 연결 유지 및 관리에 관련된 역할을 한다.
Keep-alive 라는 옵션은 클라이언트와 서버 간의 지속적인 연결을 유지하기위해 설정해준다.
기본적으로 HTTP는 각 요청마다 새로운 연결을 맺고 처리한 후에는 연결을 닫는 방식으로 동작하는데
이 과정을 매번 수행하기엔 리소스와 시간이 소요되어서 Keep-alive 옵션을 도입했다.
위 사진에서 보면 timeout=5, max=1000 라고 되어있는데
timeout=5 는 5초 동안 유지 한다는 뜻이고
max=1000 는 트랜젝션 1000개까지 유지 한다는 뜻이다.
HTTP 1.0 에서는 헤더에 Keep-alive 옵션을 추가해줘야 동작하고
HTTP 1.1 에서는 기본 값으로 Keep-alive가 설정되어 있다
Keep-alive 를 사용하는 상황은 뭘까??
웹페이지에서 리소스를 가져와야 할 때
Keep-alive를 사용하고 있다면 클라이언트가 한 번의 연결로 웹페이지의 리소스를 연속적으로 요청하고 받을 수 있다.
실시간 업데이트
웹페이지에서 동적으로 데이터를 업데이트하거나 추가 정보를 요청할 때 Keep-alive 를 사용하면
클라이언트와 서버 간의 연결을 유지하면서 실시간으로 데이터를 주고받을 수 있다.
정보
MDN에서 Keep-alive 는 비표준 이다.
HTTP 2 에서는 무시된다.
JSON 파일에 대해 간략히 알아보고 Python으로 json 파일을 Read, write 할 수 있는 코드 제출하기 (json 파일에 대한 스터디 자료도 제출)
JSON (JavaScript Object Notation)
Javascript 객체 문법을 따르는 문자 기반의 데이터 포맷
JS가 아니더라도 JSON을 읽고 쓸 수 있다
JS 객체 문법을 따르고 있어 Key/Value 로 데이터를 표현한다.
Python으로 json 파일을 Read
py 코드
import json
file_path = "8.09/test_read.json"
with open(file_path, 'r') as file:
data = json.load(file)
print(data)
json 코드
{
"name": "고랑",
"stack": "백엔드",
"blog": "https://gorangcodingstory.tistory.com",
"github": "https://github.com/go-tiger"
}
로 작성하고 실행을 했을때
다음과 같은 오류가 발생했다.
여기서 cp949로 인코딩 되어있어 해석할 수 없다고 나온다.
그럼 코드에 인코딩을 적어줘서 오류를 해결해 보자
py 코드의 5번째줄에 encoding='utf-8' 를 추가해준다.
with open(file_path, 'r', encoding='utf-8') as file:
이것처럼 읽어와 지는걸 확인할 수 있다.
Python으로 json 파일을 Write
py 코드
import json
data = {
"name": "티스토리",
"stack": "풀스택",
"blog": "https://tistory.com",
"github": "https://github.com"
}
file_path = "8.09/test_write.json"
with open(file_path, 'w', encoding='utf-8') as file:
json.dump(data, file)
코드를 작성하고 실행했을때 다음과 같이 한글이 깨져서 저장이 된다.
json.dump() 의 파라미터중에
ensure_ascii 라는게 있다.
기본은 True이고 파이썬 문자열을 JSON으로 변환할 때 ASCII 문자로 인코딩된다
이 과정에서 유니코드 문자들은 ASCII 문자 형식으로 변환되서 위에 test.json 처럼 \ud2f0 등으로 변환된다
사용 하지 않을려면 False 해줘야 한다.
13번째 줄에 ensure_ascii=False 를 추가해주고 실행하면 정상적으로 저장이 된다.
json.dump(data, file, ensure_ascii=False)
과제 제출 깃헙
https://github.com/go-tiger/AI-web-camp/tree/main/8.09
참고링크
본 후기는 정보통신산업진흥원(NIPA)에서 주관하는 <AI 서비스완성! AI+웹개발 취업캠프 - 프론트엔드&백엔드> 과정 학습/프로젝트/과제 기록으로 작성되었습니다.
'코딩캠프 > AI 웹개발 취업캠프' 카테고리의 다른 글
[AI 웹개발 취업캠프] 23.08.10 과제 (0) | 2023.08.10 |
---|---|
[AI 웹개발 취업캠프] 19Day - 백엔드 HTTP(3), Rest API(1) (1) | 2023.08.10 |
[AI 웹개발 취업캠프] 18Day - 백엔드 HTTP(2) (0) | 2023.08.09 |
[AI 웹개발 취업캠프] 17Day - 백엔드 HTTP(1) (0) | 2023.08.08 |
[AI 웹개발 취업캠프] 23.08.08 과제 (0) | 2023.08.08 |