Pygithub: 비동기 지원

에 λ§Œλ“  2020λ…„ 05μ›” 24일  Β·  10μ½”λ©˜νŠΈ  Β·  좜처: PyGithub/PyGithub

PyGithub 비동기 지원에 λŒ€ν•΄ μ–΄λ–»κ²Œ μƒκ°ν•˜μ‹­λ‹ˆκΉŒ? λ‚΄κ°€ PyGithub에 λŒ€ν•œ 비동기 지원을 ν•œλ‹€λ©΄ - μˆ˜λ½ν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ?

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

λ‚˜λŠ” 이 문제λ₯Ό λ‹«μ•„μ•Ό ν•œλ‹€κ³  μƒκ°ν•˜μ§€ μ•ŠλŠ”λ‹€. IO 바인딩 μž‘μ—…μ— asyncio λ₯Ό μ‚¬μš©ν•˜λŠ” 것이 μ™„λ²½ν•œ μ‚¬μš© μ‚¬λ‘€μž…λ‹ˆλ‹€.

λͺ¨λ“  10 λŒ“κΈ€

μ–΄λ–€ λ°©μ‹μœΌλ‘œ 비동기 지원을 μΆ”κ°€ν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ? λŒ€λΆ€λΆ„μ˜ μž‘μ—…μ΄ GitHubμ—μ„œ μ›κ²©μœΌλ‘œ μˆ˜ν–‰λ˜κ³  μ½”λ“œκ°€ μ‘λ‹΅μ΄λ‚˜ JSON 블둭을 기닀리고 μžˆλ‹€κ³  κ°€μ •ν•  λ•Œ μ–΄λ–»κ²Œ 도움이 λ κΉŒμš”?

λŒ€λΆ€λΆ„μ˜ μž‘μ—…μ΄ GitHubμ—μ„œ μ›κ²©μœΌλ‘œ μˆ˜ν–‰λ˜κ³  μ½”λ“œκ°€ 응닡을 기닀리고 μžˆλ‹€λŠ” 점을 κ°μ•ˆν•  λ•Œ

이것이 비동기 λ„μž…μ˜ 쒋은 μ΄μœ μž…λ‹ˆλ‹€! λ‚΄ 말은... PyGithub은 API μ•‘μ„ΈμŠ€λ₯Ό μ½”λ£¨ν‹΄μœΌλ‘œ μ²˜λ¦¬ν•΄μ•Ό ν•©λ‹ˆλ‹€. 그렇지 μ•ŠμœΌλ©΄ λŒ€λΆ€λΆ„ μœ μš©ν•œ μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” λŒ€μ‹  μ„œλ²„μ˜ 응닡을 기닀리고 μžˆμŠ΅λ‹ˆλ‹€. nodejs의 일반적인 κ°œλ…μ΄λ©° ν˜„μž¬ @octokit/rest.jsμ—μ„œ μ§€μ›λ©λ‹ˆλ‹€.
아무도 전에이 κΈ°λŠ₯을 μš”κ΅¬ν•˜μ§€ μ•Šμ•˜λ‹€λŠ” 것에 λ†€λžμŠ΅λ‹ˆλ‹€ ...

Obs: PyGithub이 ν˜„μž¬ μ–΄λ–»κ²Œ μž‘λ™ν•˜λŠ”μ§€ 잘λͺ» μ΄ν•΄ν–ˆμ„ μˆ˜λ„ μžˆμ§€λ§Œ 순차 및 동기 API λž˜νΌκ°€ 비동기 API λž˜νΌλ³΄λ‹€ 덜 효율적이라고 μƒκ°ν•©λ‹ˆλ‹€.

μƒˆλ‘œμš΄ AsyncRequester 클래슀λ₯Ό μΆ”κ°€ν•˜κ³  논리λ₯Ό μœ μ§€ν•˜λ©΄μ„œ μƒν˜Έ μž‘μš©ν•˜κΈ° μœ„ν•΄ λ‹€λ₯Έ λͺ¨λ“  ν΄λž˜μŠ€μ—μ„œ 비동기 λ©”μ„œλ“œλ₯Ό λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€.

비동기 μ½”λ“œλŠ” 검색과 같이 λ§Žμ€ 수의 쿼리λ₯Ό 생성해야 ν•˜λŠ” μž‘μ—…μ— 도움이 될 수 μžˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ Githubμ—μ„œ μ—¬λŸ¬ κ³„μ •μœΌλ‘œ λΉ λ₯΄κ²Œ μž‘μ—…ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ—¬λŸ¬ 계정 ν™œμš©μ— λŒ€ν•œ 지원 좔가와 ν•¨κ»˜ μ™„μ „ν•œ μž¬μ„€κ³„μ²˜λŸΌ λ“€λ¦½λ‹ˆλ‹€. λ‚˜λŠ” λ‹Ήμ‹ μ˜ 열정을 μ‚¬λž‘ν•˜μ§€λ§Œ μΆ©λΆ„ν•œ 이읡을 얻지 λͺ»ν•˜λŠ” 것은 λ”μ°ν•˜κ²Œ λ§Žμ€ 일이라고 μƒκ°ν•©λ‹ˆλ‹€.

λ§Žμ€ μž‘μ—…μ΄ ν•„μš”ν•  수 μžˆμ§€λ§Œ κ΅¬ν˜„λ˜λŠ” 것을 보고 μ‹ΆμŠ΅λ‹ˆλ‹€. ν˜„μž¬ μ €λŠ” @octokit/rest.js μ„±λŠ₯이 PyGithubλ₯Ό λŠ₯κ°€ν•˜κΈ° λ•Œλ¬Έμ— 제 μ—°κ΅¬μ—μ„œ JSλ₯Ό μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. 도움이 ν•„μš”ν•˜λ‹€λ©΄ 저도 이 일을 ν•˜κ²Œ λ˜μ–΄ κΈ°μ©λ‹ˆλ‹€.

Btw μ—¬λŸ¬ 계정 지원이 λ„ˆλ¬΄ λ§Žμ„ 것 κ°™μ•„μš”! asyncλŠ” μ„±λŠ₯ ν–₯상을 μœ„ν•œ μ—„μ²­λ‚œ 첫 번째 단계가 μ•„λ‹™λ‹ˆκΉŒ?

λͺ¨λ“  μ—λ””μ…˜μ„ λ§Œλ“€κ³  ν’€ λ¦¬ν€˜μŠ€νŠΈμ—μ„œ 보여쀄 수 μžˆμ„κΉŒμš”? ν…ŒμŠ€νŠΈμš©

AsyncioλŠ” λ‚΄ μ‚¬μš© 사둀λ₯Ό κ°μ•ˆν•  λ•Œ 쒋은 μƒκ°μ²˜λŸΌ λ“€λ¦½λ‹ˆλ‹€. μ €μž₯μ†Œμ˜ λͺ¨λ“  νŒŒμΌμ„ μž¬κ·€μ μœΌλ‘œ 읽으렀고 ν•˜λŠ”λ° 동기 μš”μ²­μ΄ λ„ˆλ¬΄ λŠλ¦½λ‹ˆλ‹€.

GitHub APIλ₯Ό 톡해 λͺ¨λ“  것을 μš”μ²­ν•˜λŠ” 것보닀 GitPythonκ³Ό 같은 것을 μ‚¬μš©ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.

ν₯미둜운 μ œμ•ˆμ„ ν•΄μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€. κ·Έλ ‡κ²Œ ν•˜λŠ” 것이 합리적이기 λ•Œλ¬Έμ— μ‹œλ„ν•΄ λ³΄κ² μŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” 이 문제λ₯Ό λ‹«μ•„μ•Ό ν•œλ‹€κ³  μƒκ°ν•˜μ§€ μ•ŠλŠ”λ‹€. IO 바인딩 μž‘μ—…μ— asyncio λ₯Ό μ‚¬μš©ν•˜λŠ” 것이 μ™„λ²½ν•œ μ‚¬μš© μ‚¬λ‘€μž…λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰