fix(backend): add async lock to prevent Already borrowed issue
This commit is contained in:
@@ -7,15 +7,19 @@ from convex import ConvexClient as SyncConvexClient
|
||||
class ConvexClient:
|
||||
def __init__(self, url: str) -> None:
|
||||
self._client = SyncConvexClient(url)
|
||||
self._lock = asyncio.Lock()
|
||||
|
||||
async def query(self, name: str, args: dict[str, Any] | None = None) -> Any: # noqa: ANN401
|
||||
return await asyncio.to_thread(self._client.query, name, args or {})
|
||||
async with self._lock:
|
||||
return await asyncio.to_thread(self._client.query, name, args or {})
|
||||
|
||||
async def mutation(self, name: str, args: dict[str, Any] | None = None) -> Any: # noqa: ANN401
|
||||
return await asyncio.to_thread(self._client.mutation, name, args or {})
|
||||
async with self._lock:
|
||||
return await asyncio.to_thread(self._client.mutation, name, args or {})
|
||||
|
||||
async def action(self, name: str, args: dict[str, Any] | None = None) -> Any: # noqa: ANN401
|
||||
return await asyncio.to_thread(self._client.action, name, args or {})
|
||||
async with self._lock:
|
||||
return await asyncio.to_thread(self._client.action, name, args or {})
|
||||
|
||||
def subscribe(self, name: str, args: dict[str, Any] | None = None) -> Any: # noqa: ANN401
|
||||
return self._client.subscribe(name, args or {})
|
||||
|
||||
Reference in New Issue
Block a user