묻고 답해요
143만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨웹 프론트엔드를 위한 자바스크립트 첫걸음
async pending상태의 promise객체
// promise 복습 promise 객체(executor 콜백함수(resolve, reject)) const delay= // delay는 ms값을 받아 promise 객체를 리턴 (ms)=>{return new Promise( // 인수로 함수를 받음, resolve(성공)를 인수로 받아 처리하는 지연함수(executor) (resolve)=>{setTimeout( // setTimeOut은 callback함수와 ms초값을 받음 ()=>{resolve();},ms);} ); } const start=()=>{delay(2000).then(()=>{console.log("대기");});} start(); // async const delay2= (ms)=>{return new Promise( (resolve)=>{setTimeout( ()=>{resolve();},ms);} ); } // 함수의 오른쪽에 작성 -> promise 객체 반환 const start2=async()=>{delay2(2000).then(()=>{console.log("async 대기");});} console.log(start2());섹션 4에 5강 async, await를 수강하던 중에 영상과 다른 결과가 출력 되어 질문 드립니다.두 코드의 결과를 서로 비교하고 싶어서 코드를 2개로 나누었는데요. async를 적은 코드는 pending상태의 promise객체가 나온다고 하셨는데 저는 계속 fulfilled가 나와서 제가 코드를 잘못 썼는지 질문 드리고 싶습니다. 위의 코드의 영향이 있을까 싶어 주석 처리 해도 결과는 같았습니다.
-
미해결파이썬 동시성 프로그래밍 : 데이터 수집부터 웹 개발까지 (feat. FastAPI)
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. # app 폴더 아래 main.py @app.post("/collect", response_class=HTMLResponse) async def collect(request: Request): brandlist = BrandList() brands = await brandlist.run() oy_models = [] for brand in brands: oy_model = BrandListModel( code=brand["code"], brand=brand["brand"], collection_time=brand["time"], status=brand["status"], ) oy_models.append(oy_model) await mongodb.engine.save_all(oy_models) return templates.TemplateResponse( "./index.html", {"request": request, "title": "수집기", "brands": brands}, ) # app 폴더 아래 spcrper.py class BrandList: URL = "https://www.#######.co.kr" def unit_url(self): url = f"{self.URL}/store/main/getBrandList.do" return url async def fetch(self): async with aiohttp.ClientSession() as session: async with session.get(self.unit_url()) as response: soup = BeautifulSoup(await response.text(), "html.parser") area_info = soup.select("a[data-ref-onlbrndcd]") branddics = [] for info in area_info: code = info["data-ref-onlbrndcd"] name = info.text collectiontime = date.today() item = [i["code"] for i in branddics] if code in item: pass else: branddic = { "code": f"{code}", "brand": f"{name}", "time": f"{collectiontime}", "status": "Old", } branddics.append(branddic) await session.close() return branddics def run(self): return asyncio.run(self.fetch()) 안녕하세요. 강사님. scraper.py 는 terminal에서 값을 잘 가져오고 있습니다. server.py에서 구동 시, 아래와 같은 error가 나오는데 원인을 찾지 못해서요 ㅠ RuntimeError: asyncio.run() cannot be called from a running event loopC:\Users\user\Desktop\Project_Scraper\venv\Lib\site-packages\uvicorn\protocols\http\httptools_impl.py👎 RuntimeWarning: coroutine 'BrandList.fetch' was never awaitedRuntimeWarning: Enable tracemalloc to get the object allocation traceback 코드 리뷰 좀 부탁드리겠습니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part9: MMO 컨텐츠 구현 (DB연동 + 대형 구조 + 라이브 준비)
EF사용시 async사용
EF 변경사항을 저장할 때 SaveChangeAsync가 아닌 SaveChange를 사용하게되면 해당 쓰래드는 blocking이 발생할텐데 괜찮나요? 제 추측으론EAP 기반 IO 통신이기때문에 어차피 패킷요청마다 개별의 쓰래드에서 처리가되니 굳이 async를 사용안해도 다른 패킷(Thread)에 대한 blocking이 이러나지 않으니까 그냥 SaveChange를 사용한건가? 라고 생각하긴 했는데 선생님의 답변을 듣고싶습니다.
-
미해결[2024] 한입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
async return 자료형이 Promise인 설징에 대한 질문
async로 선언된 함수의 반환형은 promise아닌가요? console.log(res)가 문자열 hello async를 출력하는 이유를 모르겠습니다.
-
미해결앨런 iOS 앱 개발 (15개의 앱을 만들면서 근본원리부터 배우는 UIKit) - MVVM까지
섹션 15 동기와 비동기의 개념 질문있습니다
강의를 듣던 도중 동기 , 비동기, 직렬, 동시 에 개념에 대해서 질문이 생겼습니다.직렬의 경우 그림으로 표현해 주셨던 것처럼다른 하나의 쓰레드에서 task를 순서에 따라 전부 다 처리한다고 이해했는데,제가 이해한 것이 맞다면, 동기 방식으로 직렬 테스크를 처리했을 때 굳이 다른쓰레드로 테스크를 넘기는 것이 의미가 있나요? 비동기라면 해당 테스크를 직렬로 처리하더라도 동시에 다른 테스크를 진행할 수 있다고 생각하지만 동기처리의 경우 결국 메인쓰레드에서 진행하는 것과 같은 수준의 처리시간이 들고 오히려 쓰레드를 바꾸는데에 대한 리소스만 더 사용하게 되는것은 아닌가요??라는 의문이 들었습니다..!
-
해결됨홍정모의 따라하며 배우는 C++
비동기 프로그래밍 관련 질문입니다.
int main() { // future and promsise { std::promise<int> prom; auto future = prom.get_future(); auto t = std::thread([](std::promise<int>&& prom) { prom.set_value(1 + 2); }, std::move(prom)); cout << future.get() << endl; t.join(); } }이건 수업중 코드입니다.살짝 햇갈려서 구글링으로 이것저것 검색해보던중https://modoocode.com/284이 사이트의 설명을 읽다가 몇가지 질문 남겨봅니다.링크에서 std::promise 와 std::future 부분입니다. 1.cout << future.get() << endl; 여기서 작업한 값들이 promise객체의 인스턴스에 저장되어 있고 이를 돌려받아야되는데 promise객체의 인스턴스에 대한 언급없이 딸랑 get()만 쓰면 promise객체의 인스턴스로부터 돌려받는다는것을 어떻게 알 수 있나요? std::future<string> data = p.get_future();이 부분에서 약속을 했으니 그냥 get함수하면 알아서 promise객체로부터 값을 받아오고 출력까지 하는건가요? 그냥 이렇게 이해하면 되는건가요? 2.1번질문의 연장선입니다.get을 한번 더 쓰면 오류가 나는 이유가 저 링크에 의하면future 에서 get 을 호출하면, 설정된 객체가 이동 하기 때문에 절대로 get 을 두 번 호출하면 안됩니다. 라던데 이게 무슨말인가요?get함수는 그냥 값을 받아오는건데 객체가 이동한다는건 뭔가요?? 3.연산수행후 돌려줄 내부 객체 타입을 정하고연산이 끝나면 future 객체에 값을 전달함. 값을 전달할 future객체는 get_future함수를 통해 설정함.여기까진 이해가 되었는데 그럼 get함수는 (1). 전달받은 값을 출력하는 함수다.get함수 호출전에 자동으로 값은 promise객체에서 future객체로 넘어간다.(2).promise객체로부터 future객체가 값을 전달받는 행위 자체를 하는 future객체의 함수다.get함수 호출전엔 값이 안넘어간다. (1),(2) 둘 중 어느것에 해당되나요?이걸 제가 왜 햇갈려서 질문드리냐면 링크를 밑으로 살짝 내려보시면 p->set_value("some data");위와 같이 promise 객체가 자신의 future 객체에 데이터를 제공한 후에; 이부분이 이해하기 애매해서 질문드립니다.저부분은 객체에 데이터를 제공하는게 아니라 그냥 promise 객체의 인스턴스에 값을 입력하는 과정이지 않습니까? 질문이 좀 난잡한점 양해부탁드립니다.
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
Django Unit Test에서 Async Task 시 Default DB 사용 이슈
unittest 기반의 Unit Test시 Celery 혹은 ProcessPoolExecutor을 이용하면 해당 Context에서 DB 접근 시, Test DB를 참조 하는 것이 아니라 settings의 Default로 설정해놓은 Exist DB에 접근하는 이슈가 있더군요. 해당하는 경우 어떻게 해야 Test DB로 붙어서 작업할 수 있을까요?with concurrent.futures.ProcessPoolExecutor() as executor:
-
해결됨Flutter 앱 개발 기초
Dart의 비동기 함수에 대한 aysnc, await 질문입니다.
Dart에서 비동기로 함수가 동작하려면 async, await 키워드를 사용하는 것으로 알고 있었는데요.. 강의 자료에서 4회차 강의 5:24에 보시면 비동기 관련 소스코드 설명이 동영상과 자료에 있습니다. --------------------------------------------------------- HTTP 요청은 응답까지 시간이 걸리기 때문에 비동기 코드입니다. 따라서 동기로 작동하려면 아래와 같이 async & await을 추가하면 됩니다. main() async { Response result = await Dio().get("URL"); print(result.data); } ---------------------------------------------------------- 그런데, 위의 소스가 비동기로 동작하는 소스 같은데, "동기로 동작하려면" 이라고 되어 있어서요. 오타인지? 아니면 제가 잘 모르는 부분이 있는건지 설명 부탁드립니다.
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
안녕하세요 선생님!! 장고 엑셀다운로드 로딩에 대하여 질문드립니다
안녕하세요!! 선생님!!! ㅎㅎㅎ 장고 다운로드 로딩에 대하여 질문드리려 합니다!! (웹은 장고로만 개발하였습니다!!) 제가 구현한 내용은 단순히 모델을 불러와서 가공후 csv 파일로 response하는 view를 만들었습니다! 그래서 다운로드 버튼을 클릭하면 모델에 있는 데이터가 다운이 되는 그러한 로직입니다! 위와 같이 그냥 요청이 오면 모델을 불러와서 응답해주는?? 단순한 view입니다!ㅎ 다만 join이 많이 걸려있고 데이터가 좀 많다보니 시간이 상당히 많이 소요가 되는데요.. 문제가 다운로드버튼(위에 설명한 view와 연결한버튼)을 클릭 한 후 서버가 이를 처리를 하는데 서버자체가 이 작업을 끝날때 까지 먹통이되는? (제 3자가 웹에 접속했을때도 이 처리 때문에 위 처리가 끝날때 까지 아무런 요청을 할 수 없습니다) 문제가 발생합니다.. 제가 사용한 서버는 AWS EC2를 활용해 도커 compose파일로 nginx, gunicorn, mariadb를 연결해서 하나의 서비스로 만들어 배포하였습니다. 또한 로드밸런서 세팅도 되있습니다. 로컬에서 개발서버로 테스트 할때는 그냥 다운로드 버튼을 클릭을 해도 바로 종료가 가능하고 다른 브라우저로 접근해도 독립적으로 작동했는데 배포를 하니깐 위와 같은 현상이 발생하네요! 서버 성능의 문제인가 해서 인스턴스 유형도 좀더 올려보고 했지만 역시 위문제는 해결되지 않았습니다..ㅠ 그래서 뭔가 비동기적으로 처리하기위해서 celery를 이용해 볼까 했는데 잘못된 접근인건지 잘모르겠지만 피라미터를 어떻게 설정해야할지 몰라서 구현에 실패를 했습니다 ㅠ 서버의 문제라면 어떻게 접근을 해야하는지,,,,, 아니면 장고로 위와 같은 문제가 해결이 가능하다면 어떻게 코드를 작성하면 좋을지 부족한게 많다보니 며칠째 해결이 안되네요 ㅠㅠ 부족한 설명이지만 잘 부탁드리겠습니다!! 너무 감사합니다 선생님!!
-
미해결Klaytn 클레이튼 블록체인 어플리케이션 만들기 - 이론과 실습
함수를 async를 사용하여 비동기로 작성한 이유가 궁금합니다.
안녕하세요. 강의 내용에 대하여 궁금한 점이 있어 질문드립니다. 코드를 보면 대부분 async를 이용하여 비동기방식으로 함수를 생성하였는데 그렇게 코딩하신 이유가 궁금합니다. 보면 async와 await를 이용하여 동기식으로 처리하는 함수가 꽤 있던데 처음부터 동기 함수로 작성하지 않은 이유와 그 차이를 알고 싶습니다.
-
해결됨함수형 프로그래밍과 JavaScript ES6+
await 원리 질문 드립니다
항상 답변 해주셔서 감사합니다 async함수에서 await 키워드의 원리가 제가 생각한 것이 맞는지 궁금합니다. 1. 전역 실행 컨택스트 생성후 콜스택 푸시 2. foo 함수 실행 -> foo 실행 컨택스트 생성 후 콜스택 푸시 3. delay1000 함수 실헹 4. 프로미스 생성자 함수가 전달받은 콜백함수를 web api에 넘기고 프로미스 객체를 반환하고 종료 5. foo 실행 컨텍스트에서 await 키워드로 인해 프로미스가 settled 상태가 될 때까지 대기 6. webapi에서 콜백함수 처리 후 프로미스 상태 fulfilled로 변경 7. 런타임 이어서 진행 const delay1000 = async a => new Promise(resolve => setTimeout(() => resolve(a), 1000)); const foo = async () => { const bar = await delay1000(1111); console.log(bar); } foo();
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
비동기 방식에 대해 질문올려봅니다.
안녕하세요. 그랩님 그랩님 강좌를 잘 보고 있는 한 수강생입니다. 다름이아니라 강의 내용과는 별개의 내용이지만 그랩님을 통해 자바스크립트를 배우고 여러가지 배웠기 때문에 그랩님께 질문 남겨봅니다. const getData = async () => { try { const result = await axios.get( "https://b2ef45f8-e166-41d7-bd35-9ad159028fbf.mock.pstmn.io/test" ); const products = result.data.products; console.log(products); console.log(`status:(${result.status}) 통신을 성공했습니다!`); const data = JSON.stringify(products); return data; } catch (err) { console.error(err); console.log("결과를 가져오지 못했습니다."); return err; } }; console.log(getData()); 위에 코드는 프로미스 형식의 axios객체를 async, await을 이용해 then과 catch등을 축약해서 제가 만든 포스트맨 목서버의 데이터를 get메서드로 불러와서 결과값을 확인하는 코드입니다. 실행에는 문제가 전혀 없습니다. 그런데 제가 궁금한 것은 getData 함수 표현식이 async로 감싸져 promise객체를 받아 비동기 처리가 되어서 console.log(getData())가 먼저 실행된 뒤에 getData 함수가 실행된다는것은 알고있습니다. 허나 만약에 비동기 함수에서 리턴값을 받아 출력을 하고 싶을 때는 어떤 처리를 해야 하는지가 궁금합니다. 만약 코드가 실행되면 console.log(getData())가 실행될 때 Promise { <pending> }가 출력이 되었습니다.
-
미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
비동기 API 호출 질문드립니다.
안녕하세요 Client에서 fetch로 데이터 호출하는 부분 구현해보고 있는데요, 비동기관련 문제에 대해 해결방법이 생각이 안 나서 질문드립니다. 대략적인 코드는 다음과 같은데요, 직원 목록 받아와서 근로 중인 직원들만 추려내는 로직입니다. ============================================================================================ get(url, fetchData, fetchIsTrue){ let data; let data = fetchData(url); // 직원 목록 가져옴(비동기) let filteredData = []; for(let i = 0 ; i < data.length ; i++){ let bool = fetchIsTrue(data[i]); // 근무중인지 서버에 확인 요청(비동기) if(bool){ filteredData.push(data[i]); } } return filteredData; } const myData = get('http://192.0.0.1',fetchData,fetchIsTrue) ============================================================================================ 이 코드에서 myData가 순수한 배열에 근무중인 직원 배열인 filteredData를 받아오려면 어떻게 수정하면 될까요? 감사합니다.
-
미해결Vue.js 끝장내기 - 실무에 필요한 모든 것
async await 질문드립니다!
안녕하세요 강사님 궁금한것이 생겨 질문드립니다. 1. async await를 사용하는 이유로는 promise .then.catch 이런 패턴으로 작성하지않으려고? 코드를 좀더 동기적으로 작성하려고 쓰는것으로 알고있습니다. async await에서 promise.then.catch문을 작성한다면 async await을 활용하지 못하는거나 다름없는건가요? 2.async를 사용할때 try catch로 묶어서 에러처리를 하잖아요 그렇게되면 여러 비동기로직들을 사용할때 에러처리를 각각 해줄방법이 궁금한데 더 상위인 api 모듈화한곳에서 try catch로 묶어서 처리를 해줘야하는건가요? 현업에서는 async await 에러처리를 어떤식으로 하는지 궁금합니다!
-
해결됨mongoDB 기초부터 실무까지(feat. Node.js)
createBlog가 await하는 동안
createblog가 awiat 하는 동안 또 불리면 어떻게 되나요? 예를들어 여러명의 유저가 동시에 createBlog를 호출하게되면 계속 await하고 다음거 await 처리할때까지 대기 하고 있을 것 같은데... 이런 경우 어떻게 처리되나요??