묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
계속해서 데이터가 줄지 않고 100개로 나옵니다.
OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended2023-08-02T14:04:15.469+09:00 DEBUG 24388 --- [ main] org.hibernate.SQL : insert into stock (product_id,quantity) values (?,?)Hibernate: insert into stock (product_id,quantity) values (?,?)2023-08-02T14:04:15.723+09:00 DEBUG 24388 --- [ main] org.hibernate.SQL : select s1_0.id,s1_0.product_id,s1_0.quantity from stock s1_0 where s1_0.id=?Hibernate: select s1_0.id,s1_0.product_id,s1_0.quantity from stock s1_0 where s1_0.id=?2023-08-02T14:04:15.788+09:00 DEBUG 24388 --- [ main] org.hibernate.SQL : select s1_0.id,s1_0.product_id,s1_0.quantity from stock s1_0Hibernate: select s1_0.id,s1_0.product_id,s1_0.quantity from stock s1_02023-08-02T14:04:15.802+09:00 DEBUG 24388 --- [ main] org.hibernate.SQL : delete from stock where id=?Hibernate: delete from stock where id=? org.opentest4j.AssertionFailedError: Expected :0Actual :100 이유가 뭔지 잘 모르겠습니다. 코드도 아무리 봐도 같습니다 ㅠㅠ
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
facade 패턴 적용 및 service 에서 락 재흭득 처리 후 문제 질문
facade 패턴 적용에 대한 질문 강의를 듣고 facade 패턴에 대해서 조금 공부해봤습니다.강의에서 facade 패턴을 적용한 이유가 락 흭득 관련한 반복 로직을 service 레이어에서 분리하기 위함이라고 이해했습니다. 현재 service 레이어에는 메서드가 하나라서 facade 에 메서드가 하나인 것인가? 라는 생각이 들었습니다.1. 락 처리(동시성 문제 처리)를 하는 메서드만 facade 로 분리를 해주는 것인가요? 2. 아니면 service 레이어에 있는 모든 메서드에 대해서 facade 패턴으로 분리한 클래스에 메서드 호출을 넣어야하는 것인가요?만약 1번이 맞다면 컨트롤러에서 일반 service layer 와 facade 둘다 컨트롤러에서 의존성을 갖고 있도록 해야할텐데 이는 컨트롤러에에서 락처리를 하는 facade.decrease 와 stockService.decrease 둘다 참조 가능한 것이 이상하다는 생각이 들었습니다.---이와 별개로 facade 를 적용하지않고 service 에서 decrease 에 대해 락 흭득 재흭득 처리를 하면 단순하게 아래 처럼 처리 할 수 있다고 생각했습니다..그랬더니 동시성 문제가 해결되지 않고 테스트를 돌려보니 51 만큼만 감소가 이루어 지더라구요... 이유가 뭔지 궁금합니다.@Service public class OptimisticLockStockService { private final StockRepository stockRepository; public OptimisticLockStockService(StockRepository stockRepository) { this.stockRepository = stockRepository; } @Transactional public void decrease(Long id, Long quantity) throws InterruptedException { while (true) { try { Stock stock = stockRepository.findByIdWithOptimisticLock(id); stock.decrease(quantity); stockRepository.saveAndFlush(stock); } catch (Exception e) { Thread.sleep(50); } } } }
-
해결됨파이썬 동시성 프로그래밍 : 데이터 수집부터 웹 개발까지 (feat. FastAPI, async, await)
sec3-2. robots.txt에 관한 질문입니다.
안녕하세요. 선생님. 각 웹사이트에서 크롤링에 대한 가능범위를 robots.txt에서 확인할 수 있다고 하셨습니다. robots.txt에 대한 부분을 확인할 수 있는 경우도 있지만 사실 robots.txt에 대해 명시하지 않는 사이트들도 많아서, 이런 경우에는 해당 웹사이트가 크롤링에 대해 어떤 스탠스를 취하고 있는지 어려운 경우가 있습니다.CU편의점 웹사이트는 Request Blocked 메시지를 띄운다던가, 어떤 웹사이트는 400번 에러를 내며 크롤링 가능범위를 보여주지 않습니다.이런 경우에는 웹사이트가 어떤 스탠스를 갖고 있다고 판단하면 될까요? 또한, 블로그와 같은 개인적인 공간에 특정 웹사이트를 크롤링하는 코드를 올리는 것은 문제의 소지가 있을까요?강의 감사히 듣고 있습니다. 감사합니다.
-
해결됨재고시스템으로 알아보는 동시성이슈 해결방법
레디스 설정이 추가적으로 필요없는건가요?
도커를 통해 레디스 설치후 라이브러리 설정 외에 별로의 URL이나 주소를 매핑하지 않았는데 어떻게 자동으로 연결되는 걸까요 ?
-
미해결파이썬 동시성 프로그래밍 : 데이터 수집부터 웹 개발까지 (feat. FastAPI, async, await)
프로젝트 관련질문
현재 몽고디비에 데이터가 잘들어가는지 확인하기 위해서 odmantic을 설치한 이후로 오류가 떴고이러한 오류가떴고 확인 해보니from odmantic import AIOEngine 문제라는 판단으로 pip install --upgrade odamantic을 했지만 별 효과가 없어서 문의하게되었습니다. 추가적으로 하다보니 init.py 이했을떄는 문제없고 mongodb.connect할 때 문제인데 mongodb의 연결문제라고 생각중입니다 Process SpawnProcess-1: Traceback (most recent call last): File "C:\Users\hs091\anaconda3\lib\multiprocessing\process.py", line 315, in _bootstrap self.run() File "C:\Users\hs091\anaconda3\lib\multiprocessing\process.py", line 108, in run self._target(*self._args, **self._kwargs) File "C:\Users\hs091\anaconda3\lib\site-packages\uvicorn\_subprocess.py", line 76, in subprocess_started target(sockets=sockets) File "C:\Users\hs091\anaconda3\lib\site-packages\uvicorn\server.py", line 61, in run return asyncio.run(self.serve(sockets=sockets)) File "C:\Users\hs091\anaconda3\lib\asyncio\runners.py", line 44, in run return loop.run_until_complete(main) File "C:\Users\hs091\anaconda3\lib\asyncio\base_events.py", line 642, in run_until_complete return future.result() File "C:\Users\hs091\anaconda3\lib\site-packages\uvicorn\server.py", line 68, in serve config.load() File "C:\Users\hs091\anaconda3\lib\site-packages\uvicorn\config.py", line 467, in load self.loaded_app = import_from_string(self.app) File "C:\Users\hs091\anaconda3\lib\site-packages\uvicorn\importer.py", line 21, in import_from_string module = importlib.import_module(module_str) File "C:\Users\hs091\anaconda3\lib\importlib\__init__.py", line 127, in import_module return bootstrap.gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1030, in gcdimport File "<frozen importlib._bootstrap>", line 1007, in findand_load File "<frozen importlib._bootstrap>", line 986, in findand_load_unlocked File "<frozen importlib._bootstrap>", line 680, in loadunlocked File "<frozen importlib._bootstrap_external>", line 850, in exec_module File "<frozen importlib._bootstrap>", line 228, in callwith_frames_removed File "C:\Users\hs091\studyDs\teaching-async-python-main\6-실전-프로젝트-콜렉터스\app\main.py", line 5, in <module> from app.models import mongodb File "C:\Users\hs091\studyDs\teaching-async-python-main\6-실전-프로젝트-콜렉터스\app\models\__init__.py", line 2, in <module> from odmantic import AIOEngine File "C:\Users\hs091\anaconda3\lib\site-packages\odmantic\__init__.py", line 1, in <module> from .bson import ObjectId File "C:\Users\hs091\anaconda3\lib\site-packages\odmantic\bson.py", line 11, in <module> from pydantic.datetime_parse import parse_datetime File "C:\Users\hs091\anaconda3\lib\site-packages\pydantic\_migration.py", line 295, in wrapper raise PydanticImportError(f'`{import_path}` has been removed in V2.') pydantic.errors.PydanticImportError: pydantic.datetime_parse:parse_datetime has been removed in V2. For further information visit https://errors.pydantic.dev/2.1.1/u/import-error
-
미해결파이썬 동시성 프로그래밍 : 데이터 수집부터 웹 개발까지 (feat. FastAPI, async, await)
프로젝트 부분에 대한 질문
현재 혼자 처음시작부터 따라하는 부분으로써 두가지의 오류가 있었고 init.py에서는 이부분에서 config에서 가져오는 MONGO_DB_NAME의 문제가있는데 config나 secrets에서 철자 틀린건 없었습니다 오류내용은 line too long (81 > 79 characters)Flake8(E501) 이오류인데 flake의 잘못인가요??main.py 에서 그냥 import 오류인 app.models.mongodb' imported but unusedFlake8(F401) 똑같은 문제인것같습니다
-
미해결파이썬 동시성 프로그래밍 : 데이터 수집부터 웹 개발까지 (feat. FastAPI, async, await)
몽고디비 설치에 따른 GUI변경
GUI가 변한 것으로 인해 잘되어가는지 몰라서 한번 확인이가능할까요??
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
레디스 라이브러리 장단점에 대해서 혼동이 있어서 질문드립니다.
강의 내용에 따르면 Redisson 을 사용하면 락 흭득 재시도를 기본으로 구성한다는 말씀을 해주셨습니다.RedissonLockStockFacade 예제를 보면decrease 메서드 내부에서 getLock 으로 락을 흭득하고 lock.tryLock() 호출을 통해 락을 잡는 다는 것으로 이해하였습니다.이 때 락 흭득 재시도를 lock.tryLock() 내부에서 이루어 지는 건가요??또한 lettuce 사용 시 락 흭득 재시도를 하는 과정은 while(!redisLockRepository.lock(key)) 를 통해서 스핀락 형태로 이루어지는건가요?
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
OptimisticLockStockService 에 @트랜잭션을 사용하지 않는경우
OptimisticLockStockService 에 decrease 메서드에 @트랜잭션을 사용하지 않는 경우 테스트 코드가 멈추지 않는 문제가 있었습니다.이런 경우 왜 그런건가요??
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
강의자료
강의자료 다운로드는 어디서 받나요??
-
미해결파이썬 동시성 프로그래밍 : 데이터 수집부터 웹 개발까지 (feat. FastAPI, async, await)
flask 설치에 따라서
pip install flask를 했는데설치 하는 도중에 마지막에 WARNING: You are using pip version 21.2.3; however, version 23.2.1 is available.You should consider upgrading via the 'C:\Users\hs091\FastAPI\venv\Scripts\python.exe -m pip install --upgrade pip' command.이러한 오류가떴었고 pip install --upgrade pip를 했지만 이겄도한 pip help install 이러한 오류가뜨게됩니다 방안이있을까요?
-
미해결파이썬 동시성 프로그래밍 : 데이터 수집부터 웹 개발까지 (feat. FastAPI, async, await)
앞부분에 (base)나 (venv)자체가 뜨지가 않습니다.
window 에서하는 중인데 비주얼스튜디오코드를 설치를 햇는데 아예 (base)라는 부분이 뜨지가 않습니다. hello.py를 하면 잘나오는 부분은 있습니다. 또한 .\venv\Scripts\activate.bat 명령어를 치면 기존 터미널에 있던 문자들이 알아서 clear가 되지만 가상환경인지 잘모르는 부분이됩니다.
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
Redis 추후 공부 법
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 강의 잘 들었습니다!동시성 문제 해결방법으로도 그렇고,캐싱 용도로도 Redis를 활용하고 싶은데요,혹시 추천해주실 수 있는 Redis 공부 방법이 있으신지 질문 드리고 싶습니다! 감사합니다!
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
try~finally 구문을 사용하시는 이유가 궁금합니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요! 아주 사소한 질문인데요, LettuceLockStockFacde 서비스의decrease() 메소드 안에서 , Lock을 획득하신 이후에 재고감소 및 락 반환 로직을 try~finally 구문으로 감싸신 이유가 궁금합니다!제 생각에는 try~finally 구문으로 감싸지 않아도,순차적으로 수행될 것 같아서, 특별히 감싸신 이유가 있을까 싶어서 질문 드립니다! 항상 좋은강의 감사드리고, 앞으로 계획하시는 추후 강의도 기대하고 있겠습니다!
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
격리수준과 동시성에 대해서 질문 있습니다!
안녕하세요! 강의 너무 잘들었습니다.강의를 들으면서 느꼈던 궁금증들이 있습니다.동시성 문제에서 락을 하는 이유는 트랜잭션의 격리 수준으로는 해결할 수 없기때문에 하는건가요? 아니면 격리수준을 높이면 성능이 안나와서 락킹을 하는 건지 궁금합니다.Redis가 인메모리라 빠른건 많이 들었는데 실제 개발 환경이면 Redis나 MySQL이나 클라우드 환경을 사용할텐데, 이게 클라우드 서버에서 인메모리를 사용한다는 건가요? Redis나 MySQL이나 네트워크 I/O가 발생하는 것은 같은데 차이가 많이 큰지가 궁금합니다!너무 궁금한 내용이라 답변해주시면 감사하겠습니다!
-
미해결운영체제 공룡책 강의
데드락 질문
28:10데드락은 상호배제 상태에서 일어나는데,오히려 lock과 unlock을 없애서 상호배제가 안되는 상황이된거 같습니다.혹시, 제가 잘못이해했다면 말씀해주세요!
-
미해결성공적인 진짜 iOS 개발자 되기 [기초부터 실무까지]
closure 3 에서 weak로 준 부분이 궁금합니다.
안녕하세요.레퍼런스 변수의 경우 레퍼런스 카운터에 의해 메모리에서 해제 되는 시점을 확인 한다고 이해 했는데요.캡쳐 리스트에서 weak self 를 사용 할 경우 레퍼런스 카운터가 증가하지 않게 되고그래서 클로저 변수를 메모리에서 해제 하지 않아도 결국 클래스의 deinit이 호출되는것을 확인 하였습니다.그렇다면 weak를 사용해 캡쳐 된 레퍼런스 변수들은 메모리에 그대로 남아 있는건가요?아니면 클래스인스턴스에서 레퍼런스 카운터가 0이 될 때 메모리에서 weak로 참조된 변수들도 같이 해제 되는건지 궁금합니다.
-
미해결운영체제 공룡책 강의
semaphore 로우레벨 코드 질문
여기서 value가 임계구간에 들어갈 수 있는 키의 갯수라 생각합니다. wait에서 키가 없으면, P를 sleep 시킨다 돼 있어서요.(근데, 키 갯수라 생각하면 sleep 할지도 모르는데, 키 를 하나 빼고 wait 검사하는 것도 이상합니다. 'S->value--' 코드가 왜 들어간건지를 모르겠어요. 그냥 조건문 'S->value <= 0' 만 있어야 하는데..)그러면, signal은 프로세스 하나가 키를 반납한 상황인데, 조건문이 키 갯수가 양수여야( 'S->value > 0') wait 큐에서 P 하나를 ready 큐로 데리고 오는게 말이 맞다고 생각합니다.제가 잘못이해한걸까요?
-
미해결고수가 되는 파이썬 : 동시성과 병렬성 문법 배우기 Feat. 멀티스레딩 vs 멀티프로세싱 (Inflearn Original)
logging과 print 차이 질문입니다..!
해당 강의에서 너무 수준 낮은 질문일지는 모르겠지만 너무너무 궁금해서요...!회사에서 모델개발을 하는데 logging모듈이 보여서 안그래도 찾아보고 있었는데 이 강의에 자주 등장하더라구요기본적으로 Logging 모듈이 디버그 할때 훨씬 편리하다는건 파악이 되었는데요 혹시 특별히 print를 쓰거나 logging 모듈을 쓰는 경우가 있을까요?예제파일 2-2에도 sub process 가 있는 proc_func 함수엔 print구문을 쓰시고, 메인 함수에는 logging 모듈을 사용하셨는데 특별한 이유가 있을까요?!
-
미해결고수가 되는 파이썬 : 동시성과 병렬성 문법 배우기 Feat. 멀티스레딩 vs 멀티프로세싱 (Inflearn Original)
확장프로그램 질문입니다
강의 중 특정 모듈에 있는 함수를 클릭하면 해당 코드를 볼 수 있게 이동하는? 확장프로그램이 있는것 같은데 혹시 알 수 있을까요..?찾아봐도 못찾겠어서 여쭤봅니다...!