본문 바로가기

Python28

[Python] Private PYPI PYPI는 the Python Package Index. 의 줄임말입니다. PYPI 는 간단하게 python 관련 패키지들이 모여있는 저장소라고 할 수 있습니다. python 개발자들은 자신이 개발한 python 모듈을 PYPI에 업로드 할 수 있으며 PYPI에 저장된 모듈은 누구에게나 공개되어 있습니다. 회사 내에서와 같이 보안이 중요한 곳에서 자신이 만든 모듈을 private 하게 구축하는 방법을 설명하겠습니다. PYPI 설치$ docker pull codekoala/pypi docker 를 사용하여 pypi 이미지를 다운 받습니다.docker 설정docker 에 대한 내용은 따로 정리하도록 하겠습니다.Usage$ sudo mkdir -p /srv/pypi # 패키지를 담는 디렉토리를 로컬에 생성합니.. 2016. 11. 9.
[Python3] two list for loop 두 개의 리스트를 동시에 루프를 돌며 갚을 얻어오고 싶은 경우, zip() 함수를 이용하면 된다. >>> li = { ... 'email': ['1', '2', '3', '4'], ... 'name': ['a', 'b', 'c', 'd'] ... } >>> for email, name in zip(li['email'], li['name']): ... print(email, name) ... 1 a 2 b 3 c 4 d for num, cheese, color in zip([1,2,3], ['manchego', 'stilton', 'brie'], ['red', 'blue', 'green']): print('{} {} {}'.format(num, color, cheese)) 1 red manchego 2 b.. 2016. 11. 8.
[Django] django-crontab Django-CrontabLinux/Unix 에서 스케줄러를 구현할 때 cron/crontab을 Django에서는 django-crontab 라이브러리를 이용하면 쉽게 구현가능 하다. django-crontab은 실제 os상의 crontab에 등록하여 동작하도록 설계되어있다.Installpip install django-crontabsetupINSTALLED_APPS = ( 'django_crontab', . . .) cronjob 추가자신이 스케줄 작업을 등록하기 위한 함수를 만들어주면 된다. myapp/cron.py# myapp/cron.py def my_scheduled_job(): pass settings.pyCRONJOBS = [ ('*/5 * * * *', 'myapp.cron.my_sched.. 2016. 10. 28.
[Python] 파이썬 정규식 반복 메타 문자 반복 메타 문자 의미 * 0회 이상 반복 + 1회 이상 반복 ? 0회 혹은 1회 {m} m회 반복 {m,n} m회부터 n회까지 반복 매칭 메타 문자메타 문자의미.줄바꿈 문자를 제외한 모든 문자와 매치됨^문자열의 시작과 매치됨.[]메타 기호 안에서는 반대의 문자열을 취함$문자열의 마지막과 매치됨[]문자 집합 중 한 문자를 의미함|또는(or)를 의미함()정규식을 그룹으로 묶음 이스케이프 기호분야설명\\역슬래쉬 문자 자체\d모든 숫자와 매치됨 [0-9]\D숫자가 아닌 문자와 매치됨[^0-9]\s화이트 스페이스 문자와 매치됨[ \t\n\r\f\v]\S화이트 스페이스가 아닌 것과 매치됨 [^ \t\n\r\f\v]\w숫자 또는 문자와 매치됨[a-zA-Z0-9_]\W숫자 또는 문자가 아닌 것과 매치됨.. 2016. 10. 27.
[Python] call by assignment (call by object, call by object reference) 공식 문서에는 Python은 call by assignment라고 되었다. Python은 모든 것이 객체(object)이고 객체에는 두 가지 종류가 있다. 1. immutable objectint, float, tuples 등이 함수 arguments로 넘어갈 땐 call by value로 넘어감. 2. mutable objectlist, dict, set과 같이 mutable object 가 argument로 넘어가면 object reference가 넘어가서 담고 있는 값이 바뀔 수도 있다. >>> def spam(eggs): ... eggs.append(1) ... eggs = [2, 3] ... >>> ham = [0] >>> spam(ham) >>> print(ham) [0, 1] eggs.app.. 2016. 10. 26.
[Django] values() values_list() flat values()object의 원하는 컬럼만 가져오기 위해서는 values를 사용할 수 있다. values를 사용하면 해당 컬럼의 key,value의 쌍의 리스트를 얻을 수 있다. >>> Entry.objects.values()[{'blog_id': 1, 'headline': 'First Entry', ...}, ...] >>> Entry.objects.values('blog')[{'blog': 1}, ...] >>> Entry.objects.values('blog_id')[{'blog_id': 1}, ...] values_list()values_list()를 사용하면 key,value 형태가 아닌 tuples 형태의 리스트로 가져올 수 있다. >>> Entry.objects.values_list('id'.. 2016. 10. 26.
[Python] RabbitMQ Publish Subscribe RabbitMQ 에 Publish/Subscribe 하는 방식입니다.Publishtopic 으로 호출하는 방식import pika import json class Publish(object): def __init__(self): self.connection = None self.channel = None self.topic = None def is_connect(self, host, topic=None): try: self.topic = topic self.connection = pika.BlockingConnection(pika.ConnectionParameters( host=host )) self.channel = self.connection.channel() self.channel.queue_dec.. 2016. 10. 26.
[Django-REST] Exception Handler RestFramework에서 자동으로 API 함수에서 Exception이 발생하면 Exception Handler에서 처리할 수 있도록 settings에서 조건을 줄 수 있다. 보통 코드에서 exception을 처리하기 위해서 try ~ exception을 사용한다. try: ... code detail except Exception as e: print(e) return Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR) 하지만, 위와 같은 코드로 작성하면 코드의 복잡도가 높아지고 reading이 힘들어진다.Custom exception handlingDjango RestFramework에서는 Exception Handler를 settings에서 자동으로 .. 2016. 10. 19.