TIL( Today I Learned)
22-10-24 월
-
WORKPLACE
-
PHASE 1 9-12 / 6
-
타임존 어웨어 네이브 차이
- 둘간의 연산 미지원
- 네이브 -> 어웨어 변환시 시간대별로 정책이 달라지는 부분이 있음
-
타임값 적용기정리하기
- 앞으로 tz aware 값을 사용하지 않을 것인가?
- 서버의 타임 기준은 utc로 할 것인가?
-
session scope uuid
- 각 세션별 current scope 지정
-
contextVar
- 상태가 있는 컨텍스트 관리자는 동시성 코드에서 상태가 예기치 않게 다른 코드로 유출되는 것을 방지하기 위해 threading.local() 대신 컨텍스트 변수를 사용해야 합니다.
- json_enabler
- aiohttp auth 인증 미들웨어
-
-
PHASE 2 13-16 / 6
- Query Param Validation? pydantic?
- PHASE 3 16-18 / 4
-
22-10-25 화
-
WORKPLACE
-
PHASE 1 9-12 / 6
-
작업 개선 내역, README.md 업데이트
- 샘플 코드
- 코드 위치
-
어제 작업한 내역 정리
- QueryBaseModel
- customjsonenabler
- 예정 작업 정리
- aiohttp request
-
-
PHASE 2 13-16 / 6
-
PHASE 3 16-18 / 4
-
fastapi response class 지저
- 집에서 해보니까 잘됨…? ? ? ??? ?
- error
- 정상동작
- 올바른 타입 처리 방법은??
- 현재 가능한 방법
-
-
22-10-26 수
-
WORKPLACE
-
PHASE 1 9-12 / 6
-
as_form 3 | 1
-
이게 왜 필요하지?
- pydantic validation error => RequestValidationError 로 변환하기
-
class method, decorator 차이 비교
-
Openapi schema 안됨
- Hey ! This is actually a great approach. I got only one question, is there a way to use this and include descriptions for each field to be displayed in swaggerUI/OpenAPI? I have tried
-
- 단순 class method 로도 안됨
-
-
custom json response 비교 3 | 2
- fastapi response class 지정
-
-
PHASE 2 13-16 / 6
-
aiohttp request class 달기 6 |
- 요청 처리
- config yaml
- 구동 command
-
-
PHASE 3 16-18 / 4
- 로거 정리 4 |
-
구조 정리해보기?
- 커밋
-
22-10-27 목
-
WORKPLACE
-
PHASE 1 9-12 / 6
- SessioCursor 찾아보기 => 그런거 없음
- 구조 정리해보기?
- 정책 정리?
-
PHASE 2 13-16 / 6
-
fastapi 설명하기 4 |
- 구조
- 동작 흐름
- flaskt 대비 달라진점
-
이식 과정 전달
-
request
- query param / path param / body
- service 붙이기
-
response
- jsonable_encoder()
- typeError Handling
- 외부 요청 모듈
- 서버 구동 동작
- config: 암호화…
-
-
path operator 인수 설명
-
- PHASE 3 16-18 / 4
-
22-10-28 금
-
WORKPLACE
-
PHASE 1 9-12 / 6
-
asyncpg: update or aiopg 사용 4 | 4
-
async pg query param 입력 지원 안함!!!
- wrapper에서 처리하기
-
-
-
PHASE 2 13-16 / 6
- 설명 정리 4 | 4
- 코드, 리포지토리 정리 2 | 2
- requirements.txt 정리
-
PHASE 3 16-18 / 4
- 깃헙 레포 업로드
- locust bench 성능
- 주간 보고
-
TEL (Trial and Error Log)
22-10-24
-
ERROR: AttributeError: ‘AsyncConnection’ object has no attribute ‘cursor’
-
SITUATION:
- pd.read_sql( query, session.connect() )
-
REASON:
- session에는 cursor가 없음
-
SOLUTION:
- result = await session.execute(text(eventdictquery))
- pd.Dataframe([row for row in result])
-
-
ERROR: ValueError: [TypeError(“‘numpy.int64’ object is not iterable”), TypeError(‘vars() argument must have dict attribute’)]
-
SITUATION:
- fastapi returning model json encoding
-
REASON:
- encode don’t know how to handle this kind of type
-
SOLUTION:
- use CustomORJSONResponse
-
22-10-25
-
ERROR:
- RuntimeError: Timeout context manager should be used inside a task
- Unclosed client session
- client_session: <aiohttp.client.ClientSession object at 0x100bd5a30>
-
SITUATION:
- async client
-
REASON:
- event loop 다름
-
SOLUTION:
- async task, 돌고있는 event loop에 넣어야 함
22-10-27
-
ERROR: AttributeError: ‘coroutine’ object has no attribute ‘empty’
-
SITUATION:
- pd.read_sql engine으로 읽기
-
REASON:
- data = async_func()
-
SOLUTION:
- await 써주자
-
-
ERROR: sqlalchemy.exc.DBAPIError: (sqlalchemy.dialects.postgresql.asyncpg.Error)
-
SITUATION:
- async engine으로 pd.read_sql
-
REASON:
- asyncpg SQL Param insert 미지원, 순수 SQL만 동작 가능
-
SOLUTION:
- pd.readsqlquery 변경
-
-
ERROR: sqlalchemy.exc.ArgumentError: List argument must consist only of tuples or dictionaries
-
SITUATION:
- pd.read_sql with params
-
REASON:
- list 형태로 Param 입력 안됨
-
SOLUTION:
- insert with dictionary
-