파이썬 동시성 프로그래밍 : 데이터 수집부터 웹 개발까지 (feat. FastAPI, async, await)
안녕하세요 알려주신 코드를 10개씩 비동기로 묶어서 while로 돌리고 싶은데 잘 안되네요 아래와 같은 코드로 했을 때 얼핏 잘 되는 것 같지만 다른 티스토리 블로그로 바꿔서 해보면 중복 데이터가 발생합니다 비동기를 while 안에 넣어서 써도 되는건지 알고 싶습니다 from bs4 import BeautifulSoup import aiohttp import asyncio async def fetch(session, url, i): async with session.get(url) as response: html = await response.text() soup = BeautifulSoup(html, "html.parser") tag = soup.find("p", class_="txt_thumb") # 첫번째 글제목만 print(tag.text) async def main(jump): BASE_URL = "https://bjpublic.tistory.com/category/%EC%A0%84%EC%B2%B4%20%EC%B6%9C%EA%B0%84%20%EB%8F%84%EC%84%9C" urls = [f"{BASE_URL}?page={i}" for i in range(j + 1, j + 11)] async with aiohttp.ClientSession() as session: await asyncio.gather(*[fetch(session, url, i) for i, url in enumerate(urls)]) if __name__ == "__main__": j = 0 while True: asyncio.run(main(j)) print("--------") j = j + 10 if j == 20: break
npm ERR! Missing script: "start" npm ERR! npm ERR! Did you mean one of these? npm ERR! npm star # Mark your favorite packages npm ERR! npm stars # View packages marked as favorites npm ERR! npm ERR! To see a list of scripts, run: npm ERR! npm run npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\hhayo\AppData\Local\npm-cache\_logs\2023-04-01T13_55_50_978Z-debug-0.log 이런 에러가 뜨는데 cd my-app을 해야만 돌아가는데 어떻게 바꿀 수 있나요? 그리고 이유가 뭔가요?
선생님 안녕하세요! 다름아니라 교안을 통해 조금씩 배우는 중인데, 왜 저는 선생님과 같은 코드를 쳤는데도, 저런식으로 오류가 뜨면서 실행이 되지 않는걸까요?ㅜㅜ auto 타입도 아예 인식이 안되더라고요. C++14버전으로 컴파일하게 설정하는 부분도 맞게 했는데 왜그럴까요? 답변 기다리겠습니다. 감사합니다!
안녕하세요. 스프링 핵심 원리 기본편 중 컴포넌트 스캔의 필터 강의를 수강하던 중 에러가 생겼습니다. 에러는 해결했지만 궁금한 점이 생겨 질문 드립니다. 구분선을 기준으로 안에 있는 말들은 모두 상황의 이해를 돕기 위한 말들이니 질문만 보고 싶으시면 구분선 밖 마지막 말만 보셔도 괜찮으실 거라 생각합니다. 제가 작성한 코드는 다음과 같고 강의의 제목과 같이 컴포넌트 스캔의 필터 부분을 학습하기 위한 예제 코드입니다. package hello.core.scan.filter; import java.lang.annotation.*; @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface MyIncludeComponent { } MyIncludeComponent라는 애노테이션을 생성하고 package hello.core.scan.filter; import org.springframework.stereotype.Component; @MyIncludeComponent public class BeanA { } 위와 같이 해당 애노테이션이 붙는 클래스 BeanB를 생성하고 package hello.core.scan.filter; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.FilterType; import static org.assertj.core.api.Assertions.*; import static org.springframework.context.annotation.ComponentScan.*; public class ComponentFilterAppConfigTest { @Test void filterScan(){ ApplicationContext ac = new AnnotationConfigApplicationContext(ComponentFilterAppConfig.class); BeanA beanA = ac.getBean("beanA", BeanA.class); assertThat(beanA).isNotNull(); // BeanB beanB = ac.getBean("beanB", BeanB.class); } @Configuration @ComponentScan( includeFilters = @Filter(type = FilterType.ANNOTATION, classes = MyIncludeComponent.class), excludeFilters = @Filter(type = FilterType.ANNOTATION, classes = MyExcludeComponent.class) ) static class ComponentFilterAppConfig{ } } 위와 같이 테스트 코드를 만들어 실행하였습니다. ComponenScan을 이용해 MyIncludeComponent 애노테이션이 붙은 클래스를 자동으로 빈으로 등록시키고 조회하는 테스트 코드입니다. (MyExcludeComponent 애노테이션이나 해당 애노테이션을 붙힌 BeanB 클래스는 현재 질문과 관계가 없다고 판단해 코드를 생략하였습니다.) 그런데 해당 테스트 코드를 실행하니 beanA라는 이름의 빈을 컨테이너에서 찾을 수 없다는 에러가 떴습니다. 여러 방법으로 찾아보던 중 @ComponentScan 애노테이션의 includeFilters 속성과 @MyIncludeComponent 애노테이션을 올바르게 사용하여도, BeanA 클래스가 스프링 컨테이너에 등록되지 않는 경우가 생길 수 있고 이를 해결하기 위해선 @Component 애노테이션이나 @Service , @Repository 등과 같은 스프링이 제공하는 스테레오 타입 애노테이션 중 하나를 BeanA 클래스에 추가하여 해당 클래스를 스프링 빈으로 등록해야 한다는 해결책을 발견했고 그대로 따라했습니다. BeanA 클래스에 @Component 애노테이션을 붙혀 테스트 코드를 그대로 다시 실행하였고 에러는 해결이 되었습니다. 그래서 BeanA 클래스의 @Component 애노테이션을 다시 제거한 후 테스트 코드를 돌렸는데 성공하였습니다. 이런 일이 왜 발생하는지 제대로 이해가 안 되어서 질문 드립니다. @ComponentScan 애노테이션의 includeFilters 속성과 @MyIncludeComponent 애노테이션을 올바르게 사용하여도, BeanA 클래스가 스프링 컨테이너에 등록되지 않는 경우가 생길 수 있는 것인가요? 또 어떤 원리로 이렇게 등록이 안 되는 경우가 생기는지가 궁금합니다!
react-router-dom 을 공부하다가 의문이 생겨서 질문글에 올립니다. 다이어리 상세 페이지로 이동시킬 때 useNavigate hook을 활용하고 있는데, useNavigate hook은 <a>태그로 렌더링되지 않고 키보드로도 접근이 안 돼서 공식 문서에서는 <Link>를 더 권장하는 거 같더라구요. https://reactrouter.com/en/main/start/concepts#navigating 어떤 걸 쓰는 게 더 좋을까요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 안녕하세요! 좋은 강의 잘 보고 있습니다. 감사합니다. LogDemoController 에서 MyLogger 의 log 함수를 통해 로그를 잘 출력하는 부분은 이해하였습니다. 다만 LogDemoService 가 왜 필요한지는 잘 모르겠더라구요. (제가 Spring 초보라서 그런듯합니다만 ^^;;) @Controller @RequiredArgsConstructor public class LogDemoController { private final LogDemoService logDemoService; private final MyLogger myLogger; @RequestMapping("log-demo") @ResponseBody public String logDemo(HttpServletRequest request) { String requestURL = request.getRequestURL().toString(); myLogger.setRequestURL(requestURL); myLogger.log("controller test"); logDemoService.logic("testId"); return "OK"; } }
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/) [질문 내용] repository에서 반환 타입을 Tuple이 아닌 바로 DTO타입으로 받아서 사용해도 무관한가요 ?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 해당 강의 06:09 에 작성된 테스트가 실패합니다. 당연히 성공할 것으로 생각한 테스트가 실패하여 원인을 찾아보려 하였으나, 잘 찾아지지 않네요 ㅠ 영속성 컨텍스트 1차 캐시에 있는 member를 가져오지 않고 실제 쿼리를 수행하여 동일한 pk 를 지닌 member를 조회해 가져오는데, Entity Manager 가 clear 될만한 조건이 발견되지 않습니다. 직접 디버깅을 따라가보려 하였으나, 이 부분도 쉽지 않네요ㅠㅠ 해결할만한 검색 키워드 정도만 주셔도 감사하겠습니다! MemberJpaRepository
다운로드 받고, 로드 하는데 처음에 다운로드 받고 로드 하는건 문제 없이 되거든요. 근데 그 이후 앱을 껐다 키고 다시 로드 받으면 PercentComplete가 0.5에 멈춰요..이유가 뭘까요..? 상황을 정확히 설명하자면 씬1에서 내려받고, 씬2로 넘어가 씬1에서 내려받은 에셋을 로드 하는거에요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 1. "타입으로 조회시 같은 타입이 둘 이상 있으면, 중복 오류가 발생한다" 예제의 경우 memberRepository1()과 memberRepository2()에 return 값이 둘다 MemmoryMemberRepository()여서(둘다 타입이 memberRepository여서) 타입 중복이 된것으로 이해했는데 맞을까요? 2. "특정 타입을 모두 조회하기"에서 key값은 빈 이름이고, value값인 beansOfType.get(key)값은 빈 객체가 맞을까요?