JSPython에서 병렬 API 호출을 만드는 방법
9478 단어 programmingjspythonhttpapi
Javascript에서는 여러 개
Promises
를 가동한 다음 함수Promise.all()를 사용하여 모두 성공할 때까지 기다릴 수 있습니다. 또는 RxJS, 스트림 또는 제어 콜백을 사용할 수 있습니다.JSPython 은 모든 명령을 동시에 평가하도록 설계되었습니다. 주로 단순성 때문에 Python 사용자처럼 보입니다. 데이터 엔지니어와 분석가는 약속, 스트림 또는 콜백과 함께 제공되는 복잡성을 좋아하지 않습니다. JSPython은 핵심에서 모든 약속을 기다리거나 해결합니다. 따라서 JSPython 런타임의 어디에도 약속이 없습니다(일부 예외적인 경우 제외).
그렇다면 코드를 병렬로 실행하는 방법은 무엇입니까?
정답은 RxJs 입니다. RxJs 함수를 사용하여 관찰 가능한 시퀀스를 만든 다음 내보낸 응답 값을 결합하고(forkJoin 사용) Promise로 다시 변환할 수 있습니다(JSPython에서 자동으로 평가됨).
다음 JSPython 코드는 이 접근 방식을 보여줍니다. 이 예는 5개의 병렬 요청을 만들고 해당 requestId와 함께 응답 배열을 반환합니다.
from 'rxjs' import forkJoin, lastValueFrom, map
ids = [2, 7, 4, 9, 5]
httpRequests$ = ids
.map(
requestId => httpRequest$("GET", "https://jsonplaceholder.typicode.com/posts/" + requestId)
.pipe(
map(r => {requestId, response: r.data})
)
)
return lastValueFrom(forkJoin(httpRequests$))
코드를 살펴보겠습니다.
운영
Run
를 누르면 결과가 표시됩니다.작업 예
작동 예제는 여기에서 찾을 수 있습니다.
https://run.worksheet.systems/data-studio/app/guest/jspy-playground?file=http-calls%2Fparallel-http-requests.jspy
또는 크롬 확장 프로그램을 사용하는 경우
chrome-extension://dkhnlgcpdiifkfjdjceogenclkdfbonh/index.html#/data-studio/app/guest/jspy-playground?file=http-calls%2Fparallel-http-requests.jspy
순차 대 병렬 API 호출
또 다른 예에서는 run_Sequential 중 하나가 https 요청을 순차적으로 만들고 run_Parallel 함수가 동일한 작업을 병렬로 수행하는 두 가지 다른 함수를 보여주고 싶습니다.
from 'rxjs' import forkJoin, lastValueFrom, map
ids = [2, 7, 4, 9, 5]
async def run_Sequential():
data = []
for requestId in ids:
response = httpGet("https://jsonplaceholder.typicode.com/posts/" + requestId)
data.push({requestId, response})
return data
async def run_Parallel():
httpRequests$ = ids
.map(
requestId => httpRequest$("GET", "https://jsonplaceholder.typicode.com/posts/" + requestId)
.pipe(
map(r => {requestId, response: r.data})
)
)
return lastValueFrom(forkJoin(httpRequests$))
if __env.entryFunction == '':
return {
sequential: run_Sequential(),
parallel: run_Parallel()
}
작업 예는 여기
https://run.worksheet.systems/data-studio/app/guest/jspy-playground?file=http-calls%2Fsequential-vs-parallel-http-calls.jspy .
이 코드를 실행하고 chrome dev-tools - network 탭을 엽니다. 차이가 확연히 보이는 곳
워크시트 데이터 스튜디오
워크시트 Data Studio는 데이터 분석, 데이터 처리, SQL 데이터베이스 관리 및 RAPID 앱 개발을 위한 로우 코드 데이터 관리 플랫폼입니다.
Reference
이 문제에 관하여(JSPython에서 병렬 API 호출을 만드는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/pavlopaska/how-to-make-parallel-api-calls-in-jspython-59o1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)