콘텐츠로 이동

백그라운드 작업

Starlette에는 처리 중인 백그라운드 작업에 대한 코드가 포함되어 있습니다. BackgroundTask 수업.

백그라운드 작업은 응답에 첨부되어야 하며 응답이 전송된 후에만 실행되어야 합니다.

배경 작업

응답에 단일 백그라운드 작업을 추가하는 데 사용됩니다.

서명: BackgroundTask(func, *args, **kwargs)

Starlette. 응용 프로그램이 Starlette에서 가져옵니다.
Starlette.에서 JSONResponse 가져오기
별자리에서. 라우팅 가져오기 경로
스타렛에서 백그라운드 작업 가져오기


...

비동기 def 가입(요청):
    데이터 = 요청을 기다립니다.json ()
    사용자 이름 = 데이터 ['사용자 이름']
    이메일 = 데이터 ['이메일']
    작업 = 백그라운드 작업 (send__, to_ = 이메일)
    메시지 = {'status': 'Signup successful'}
    JSON 응답 반환(메시지, 배경 = 작업)

Async def send_n_mail(to_):
    ...


경로 = [
    ...
    경로('/사용자/가입', 엔드포인트 = 가입, 방법 = ['POST'])
]

앱=스타렛(루트=루트)

배경 작업

응답에 여러 백그라운드 작업을 추가하는 데 사용됩니다.

서명: BackgroundTasks(tasks=[])

Starlette. 응용 프로그램이 Starlette에서 가져옵니다.
Starlette.에서 JSONResponse 가져오기
스타렛에서 백그라운드 작업 가져오기

비동기 def 가입(요청):
    데이터 = 요청을 기다립니다.json ()
    사용자 이름 = 데이터 ['사용자 이름']
    이메일 = 데이터 ['이메일']
    작업 = 백그라운드 작업()
    작업. 추가 작업 (send__, to_=)
    Tasks.add_작업(send_admin_, username = username)
    메시지 = {'status': 'Signup successful'}
    JSON 응답 반환(메시지, 배경 = 작업)

Async def send_n_mail(to_):
    ...

Async def send_admin_(사용자 이름):
    ...

경로 = [
    경로('/사용자/가입', 엔드포인트 = 가입, 방법 = ['POST'])
]

앱=스타렛(루트=루트)

!!! 중요한 것은 작업이 순서대로 실행된다는 것입니다. 작업 중 하나가 예외를 적용하면 후속 작업을 실행할 기회가 없습니다.