- sqlalchemy의 async_scoped_session은 task 단위로 Session을 공유한다.
- FastAPI는 request마다 task를 할당한다.
- Service 레이어에서 async_scoped_session에 접근하면, 하위 repository에서 공유하는 동일한 Session을 제어할 수 있다.
- 애노테이션을 통해 로직을 반복되는 서비스 코드에 노출하지 않고 적용하기
fastapi-transactional's Introduction
fastapi-transactional's People
fastapi-transactional's Issues
테스트 목표
동시에 여러 request에 대해 task 단위 session 관리가 정상적으로 동작하는지 확인하기
목표 달성을 위한 테스트 코드 샘플 스니펫(httpx.AsyncClient
활용)
import pytest
import httpx
from fastapi import FastAPI
from fastapi.testclient import TestClient
from main import app
client = TestClient(app)
@pytest.mark.asyncio
async def test_multiple_requests():
async with httpx.AsyncClient(app=app, base_url="http://test") as async_client:
requests = [
async_client.get(f"/items/{i}")
for i in range(10)
]
responses = await asyncio.gather(*requests)
for response in responses:
assert response.status_code == 200
# assert 아이템 검증
가설 검증
리퀘스트 내부에서 여러 awaitable
서비스 이용하는 경우, 각각의 awaitable
서비스가 동일한 task로 반영되는지 확인해야함
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.