TIL - 0827-0831

해야 할 일

  • 이력서 항목 추가해서 정리할 것 (word)
  • 이전 프로젝트 공부하기
  • Travis쪽 블로그 정리 및 runserver 에서 사용했던 subprocess 부분 정리하기
  • Mac 셋팅정리하기
  • PR 요청 처리 오류 -> travis 모듈로 export 해도 secrets import 되는 문제가 있음

0827

오늘 한 일

  • Travis CI 로 커밋 단위로 테스트 및 자동 배포 완료
    • 이전 PR요청인 경우와 아닌 경우에 secrets 값들로 인한 오류들이 있었다. 그래서 PR요청이 아닌 경우 production모듈로 실행하고 PR 요청인 경우엔 travis 모듈로 실행하는 부분을 추가했었다. 그러나 travis모듈 자체에서 secrets 을 포함하는 base.py를 import 하는 바람에 결과적으로 pr요청이 들어와도 테스트를 통과못하는 에러가 있었다. 결과적으로 base.py에 있는 공통된 부분을 travis.py모듈에 추가하고 완전히 독립된 모듈로 만들었다. 그 과정에서 중복된 코드가 들어가는게 제일 마음에 안든다. 이부분을 수정하려면 어떻게 해야할지 다음 스터디 시간에 조언을 좀 구해봐야 할꺼같다.
  • 이력서 형식 리포맷

0828

오늘 한 일

  • 이력서 제출 회사 정리하기
  • 코딩테스트 문제 1개 도전 -> 시간 초과 한개로 미스
    • 알고리즘 공부에 답이 있는 지가 항상 의문이다. 어렵고 또 어렵구 ㅜㅜ

0829

오늘 한 일

0830

오늘 할 일

  • 알고리즘 공부
  • 아침에 발생한 서버 오류 정리하기

toy-project

Traceback (most recent call last):
  File "/usr/local/lib/python3.6/urllib/request.py", line 1318, in do_open
    encode_chunked=req.has_header('Transfer-encoding'))
  File "/usr/local/lib/python3.6/http/client.py", line 1239, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/local/lib/python3.6/http/client.py", line 1285, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/usr/local/lib/python3.6/http/client.py", line 1234, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/usr/local/lib/python3.6/http/client.py", line 1026, in _send_output
    self.send(msg)
  File "/usr/local/lib/python3.6/http/client.py", line 964, in send
    self.connect()
  File "/usr/local/lib/python3.6/site-packages/raven/utils/http.py", line 38, in connect
    sock, ca_certs=ca_certs, cert_reqs=ssl.CERT_REQUIRED)
  File "/usr/local/lib/python3.6/ssl.py", line 1149, in wrap_socket
    ciphers=ciphers)
  File "/usr/local/lib/python3.6/ssl.py", line 814, in __init__
    self.do_handshake()
  File "/usr/local/lib/python3.6/ssl.py", line 1068, in do_handshake
    self._sslobj.do_handshake()
  File "/usr/local/lib/python3.6/ssl.py", line 689, in do_handshake
    self._sslobj.do_handshake()
socket.timeout: _ssl.c:761: The handshake operation timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/raven/transport/threaded.py", line 165, in send_sync
    super(ThreadedHTTPTransport, self).send(url, data, headers)
  File "/usr/local/lib/python3.6/site-packages/raven/transport/http.py", line 43, in send
    ca_certs=self.ca_certs,
  File "/usr/local/lib/python3.6/site-packages/raven/utils/http.py", line 66, in urlopen
    return opener.open(url, data, timeout)
  File "/usr/local/lib/python3.6/urllib/request.py", line 526, in open
    response = self._open(req, data)
  File "/usr/local/lib/python3.6/urllib/request.py", line 544, in _open
    '_open', req)
  File "/usr/local/lib/python3.6/urllib/request.py", line 504, in _call_chain
    result = func(*args)
  File "/usr/local/lib/python3.6/site-packages/raven/utils/http.py", line 46, in https_open
    return self.do_open(ValidHTTPSConnection, req)
  File "/usr/local/lib/python3.6/urllib/request.py", line 1320, in do_open
    raise URLError(err)
urllib.error.URLError: <urlopen error _ssl.c:761: The handshake operation timed out>
ERROR 2018-08-30 10:57:03,587 base 25 139794531260160 ["AttributeError: 'NoneType' object has no attribute 'find_all'", '  File "django/core/handlers/exception.py", line 35, in inner', '  File "django/core/handlers/base.py", line 128, in _get_response', '  File "django/core/handlers/base.py", line 126, in _get_response', '  File "django/views/decorators/csrf.py", line 54, in wrapped_view', '  File "books/views/api.py", line 52, in message', '  File "books/utils/crawling.py", line 215, in search_book', '  File "books/utils/crawling.py", line 186, in search_book_title', '  File "books/utils/crawling.py", line 151, in get_book_lists', '  File "books/utils/crawling.py", line 72, in get_book_location']
  • 지난번에 발생했던 오류가 또 발생했다. 그때는 어떤 키워드에서 발생했는지 몰라서 제대로 버그 수정을 못했는데 지난번 사용자 이름 - 검색키워드 이런식으로 로그를 남긴게 정말 큰 도움이 되었다.
  • 오류 키워드 : 화폐전쟁
  • 오류 원인 : 일부 책이 경우 제목과 책 정보는 있지만 현재 학교에서 소장하고 있지 않아서 서가위치, 대출 정보가 없을 때 위와 같은 오류가 났다.
  • 오류 책 정보 : 화폐전쟁. 3: 금융 하이 프런티어(2015 한정보급판)
  • 해결법 : dev/production 환경에서 로컬서버로 상세 오류를 보면서 어떤 책이 정보가 없는지 발견했다. 그리고 get_book_location() 함수에서 try-excetp문을 활용하여 위의 오류가 발생하면 return 값에 빈 리스트를 할당했다. 그리고 이걸 사용해서 문자열을 취합하는 get_book_lists() 함수에서 locations 변수가 빈값인 경우 이 도서에 대한 정보가 없습니다. 라는 문자열을 넣어놓고 출력하게 했다.
  • 의문점 : 이러한 오류로그가 sentry로 제대로 오지 않는지가 의문이다. 그리고 django log단에서도 이걸 저장해놔야하는데 왜 안생기는지에 대해 알아볼것
  • 생각들 : 아마 이 책 외에도 여러 책들에 이런 예외 오류들이 발생햇던 것 같다. 로그를 남겨놔서 정확하게 파악해서 버그를 해결했다는 점에 만족하고 또 어떤 예외들이 있을지 참 궁금하다 ㅋㅋㅋ

0831

오늘 할 일

  • 자료구조/ 알고리즘 정리 공부
  • popit 행사 참여