All Articles

TIL&TEL 22.10.24~22.10.30

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