본문 바로가기

Back-end/Python43

[Celery] 무작정 시작하기 (1) - 설치 및 실행 Scrapy+Selenium를 이용하여 크롤링을 하다가 오래 걸리는 한 녀석 때문에 다른 작업들이 밀려서 실시간으로 데이터를 가져오지 못하는 경우가 발생했다. 그래서 파이썬에서 비동기처리를 할 수 있는 방법에 대해서 찾아보다가 Scrapyd와 Celery에 대해서 알게되었다. Scrapyd는 API를 통해 Spider를 비동기적으로 호출하고 작업을 취소할 수도 있고, 사용법도 간단하여 아주 유용하게 사용한 녀석이다. 그리고 Celery는 비동기 태스크 큐이며 일련의 작업들을 큐에 담아 멀티태스킹 처리하는 방식이다. 여기에 Spider를 실행시키는 작업을 담으면 비동기처리가 가능하게 되고, 추가로 다른 작업들도 비동기 처리를 할 수 있다. 그래서 동기적으로 수행되는 웹에서 파일을 변환하여 저장하거나, 파일.. 2020. 1. 10.
[문법] 데코레이터 - Decorator 보통 함수가 정상적으로 실행되는지 확인하기위해 시작 로그와 종료 로그를 출력한다. 그러나, 로그를 출력하기위해 매번 함수의 시작과 끝에 로거를 작성하는 것은 매우 비효율적인 일이다. 이때 필요한 것이 바로 '데코레이터(Decorator)'이다. 데코레이터는 함수를 한번 감싸주어 함수가 실행되기 전과 후를 컨트롤 할 수 있게 도와준다. 함수가 실행되기 전과 후에 로그를 출력, 함수가 실행되기 전 사용자 인증, 함수가 실행된 결과를 변조하는 등 다양한 방식으로 사용된다. Flask에서 Route를 설정하기 위해서는 아래 사진과 같이 @app.route를 함수를 생성할 때 위에 선언해주는데 이것이 바로 데코레이터이다. 데코레이터는 앞에 '@' 키워드를 붙여서 사용한다. 함수를 실행할때 시작과 끝에 로그를 남겨.. 2019. 12. 24.
[문법] 가변인자 - *args, **kwargs Python에서 함수를 사용하다보면 매개변수를 가변적으로 전달하여 처리할 때가 있다. 가장 대표적인 예가 옵션을 설정할 때이다. Positional Argument로 floor를 받고, Keyword Argument로 tv, bed, computer를 받는 예제 함수를 통해 알아보자. 1 2 3 4 5 6 7 8 9 10 11 12 def dochiHouse(floor, tv=None, bed=None, computer=None): house = f'아파트 {floor}층' if floor is not None else '단독주택' things = 0 if tv is not None: things += tv if bed is not None: things += bed if computer is not N.. 2019. 12. 20.
[크롤링] 무작정 시작하기 (7) - scrapyd 2019/11/19 - [Back-end/Python] - [크롤링] 무작정 시작하기 (1) - 패키지 선택 2019/11/19 - [Back-end/Python] - [크롤링] 무작정 시작하기 (2) - 프로젝트 준비 2019/11/19 - [Back-end/Python] - [크롤링] 무작정 시작하기 (3) - Spider 2019/11/20 - [Back-end/Python] - [크롤링] 무작정 시작하기 (4) - Selenium + Scrapy 2019/11/21 - [Back-end/Python] - [크롤링] 무작정 시작하기 (5) - Item 2019/11/24 - [Back-end/Python] - [크롤링] 무작정 시작하기 (6) - 파일 다운로드 지금까지 Scrapy와 Selenium.. 2019. 11. 27.