728x90
반응형
TypeError: object of type ‘WebElement’ has no len()’
- 이유 : 왜인지는 모르겠으나 중간에 다른 거 하면서 s를 지워야겠다고 판단했던 모양… 으로 list를 가져와야 하는데 element로 하나 딱 가져오니 문제가 발생했던 것
- 해결 : store_list = driver.find_elements(By.CSS_SELECTOR, '.CHC5F') → s 추가
- 알게 된 점이나 깨달은 것 : find_elements는 list나 web element를 반환하고 find_element는 하나의 element만을 반환한다(존재할 경우에).
executable_path has been deprecated, please pass in a Service object
- 발생 이유 : 당 에러는 selenium이 4.대 버전이 되면서 리뉴얼된 방식이 아닌 기존 방식으로 코드가 작성되어 발생한 에러이다.
- 해결 : 구버전 셀레니움을 까는 방법도 있지만, 별론 거 같아서 최신 selenium이 요구하는대로 코드 작성. 사실 예전에도 난 거라 이미 어느정도 그렇게 적긴 했었는데 누락된 부분이 있었나보다.
도커 권한 문제 : redis pull 받아오다가 발생
- 발생 이유 : root 권한이 아닌 상태로 docker 실행
- 해결
- $ sudo groupadd docker # docker 그룹 생성 (아마 이미 존재할 가능성이 높다) $ sudo usermod -aG docker $USER # 현재 로그인 한 유저를 docker gorup에 추가 $ newgrp docker # 로그아웃 후 재로그인하거나 이 명령어를 실행시켜 적용이 된다.
- 위 명령어를 통해 docker group에 해당 유저를 추가해주면 된다.
- 이후 docker pull redis:alpine을 해오니 잘 됐다.
- channels를 활용한 알람 기능 구현 중 redis란 얘를 써야 한다길래 어찌어찌 해보고 있는데… 아직도 잘 모르겠다… 이건 더 공부할 필요가 있다 🤦🏻♀️🤦🏻♀️🤦🏻♀️🤦🏻♀️🤦🏻♀️🤦🏻♀️🤦🏻♀️🤦🏻♀️🤦🏻♀️🤦🏻♀️
공부한 것 → WebSocket이란?
- 공부 자료는 따로 노션에 해놨고, TIL에는 요약해서 적겠슴당.
- HTTP 프로토콜은 프론트가 백에 다시 정보를 요청할 때마다 리퀘스트를 보내고, 리스폰스를 받아오는 과정이 매번 반복된다. 그리고 둘 사이의 연결은 리스폰스를 받으면 끝난다. 이는 실시간으로 데이터를 주고받아야 할 때 굉장히 불리하다.
- 이와 달리 웹소켓은 프론트와 백 사이의 연결을 유지함으로써, 백은 프론트가 리퀘스트를 보내는 걸 기다리지 않고 리스폰스 데이터를 보낸다. 이런 점 때문에 실시간 데이터를 나타낼 때 유리하다.
- django는 기본적으로 비동기를 지원하지 않는 WSGI 서버를 기본으로 제공한다. 그래서 channels를 사용하기 위해선 ASGI 서버 설정을 따로 해주어야 한다.
consumers.py routing.py
- WebSocket의 consuemrs.py는 HTTP의 views.py의 역할을 한다.
- routing.py는 urls.py의 역할을 한다.
반응형
'Programming > TIL and WIL' 카테고리의 다른 글
| ✨ 221205 Today I Learned ✨ (0) | 2022.12.05 |
|---|---|
| ✨ Weekly I Learned ✨ (0) | 2022.12.05 |
| ✨ 221202 Today I Learned ✨ (0) | 2022.12.02 |
| 🐻 221201 Today I Learned 🐻 (0) | 2022.12.01 |
| 🐻 221130 Today I Learned 🐻 (0) | 2022.12.01 |