TIL. 최종프로젝트(22) 비동기 DB처리

2023년 07월 03일 by barryjung

    TIL. 최종프로젝트(22) 비동기 DB처리 목차

[오늘 한일]

  • 배틀 초대하기 기능 작성

 

[오늘 배운점]

장고 channels

<비동기 DB처리>

장고 channels를 사용하게되면,

비동기식으로 동작하는 컨슈머를 작성하게된다. (동기식도 있긴하다)

 

이 컨슈머 안에서는 

모델을 통해 DB를 가져올때 동기처리를 비동기에 넣어주는 동작이 필요하다.

이때 사용하는 기능이

from channels.db import database_sync_to_async

위의 모듈이다.

 

이는 별도 함수에 데코레이터로 부여할수도 있고

모듈 그대로 메소드처럼 사용할수도 있다.

그리고 모든 연산 등 처리 앞에는 await를 붙여줘야 한다.

@database_sync_to_async
def get_notification(self):
	(중략)

혹은

await database_sync_to_async(Notification.objects.get)()

위는 작성한 코드이다.