Topic

python

A collection of 10 issues

check callable parameter in python

python에서 classmethod와 staticmethod 차이점은 첫번째 파라미터에 cls가 넘어오느냐 아니냐의 차이였다고 생각했는데 아래와 같은 동작 차이도 있었다. 호출가능여부를 체크할때에는 callable을 활용해야겠다. import inspect class ATest: @classmethod def test_classmethod(cls): pass @staticmethod def test_staticmethod(): pass inspect.isfunction(ATest.test_classmethod) # False inspect.ismethod(ATest.test_classmethod) # True callable(ATest.test_
1 min read

cachetools - python

python에서 간단하게 캐쉬를 사용할 수 있는 라이브러리가 있어서 소개한다. cachetools Support Cache LFU(Least Frequently Used) LRU(Least Recently Used) RR(Random Replacement) TTL(time-to-live) install pip install cachetools usages aggregate가 무겁긴 한데 자주 바뀌지는 않고 해서 간단히 30분짜리 캐쉬를 적용했다. python decorator를 이용해서 코드가 깔끔하다 @resolve_only_args @func.
1 min read

flask json response monkey patch

Flask로 RestAPI를 작성해서 브라우저에서 보면 JSON이 제대로 나오지 않는 경우가 있다. 이때 두가지를 패치했다. json.dumps 메서드를 partial을 이용해서 기본값을 변경했다. response 헤더에서 Content-Type 값이 application/json만 있는 경우 charset=utf-8 부분도 추가할 수 있도록 했다. JSON_AS_ASCII = False JSONIFY_MIMETYPE = "application/json; charset=utf-8" import json
1 min read

performance tip - mongoengine select_related

Python에서 MongoDB ODM(Object Document Mapper)으로 mongoengine을 사용하고 있다. 특히 relation 관계를 표현할때 select_related 이 메서드를 활용하면 N+1 쿼리를 방지 할수 있는데 이때 주의점이 있다. 문제코드 파이썬에는 slicing이라는 array 형태의 데이터를 다루기 좋은 문법이 있다. 이걸 아래 코드 처럼 사용했는데 실제 쿼리에 limit와 skip이 누락된채 쿼리가 되었다.
1 min read

pip install with github repository

pip install시 공식 pypi를 이용하지 않고 github를 활용해서 배포하는 방법을 알아보자. private repository https://github.com/settings/tokens 여기서 개인용 토큰을 생성한다. private repository를 다운로드 받기 위해서는 repo 권한이 필요하다. 이거 외에는 필요없다. 여기서 생성된 토큰은 한번 밖에 볼수 없으니 생성 후 잘 보관하자. pip install type https pip install
2 min read

Subscribe to flynn's devnote

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe