Skip to content

Commit 88ba047

Browse files
committed
final api fixes
1 parent e9488b1 commit 88ba047

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

src/codeboxapi/api.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import asyncio
22
from contextlib import asynccontextmanager
3-
from datetime import datetime, timedelta
3+
from datetime import UTC, datetime, timedelta
44
from os import getenv, path
55
from typing import AsyncGenerator, Literal
66

@@ -11,15 +11,15 @@
1111
from .local import LocalBox
1212

1313
codebox = LocalBox()
14-
last_interaction = datetime.utcnow()
14+
last_interaction = datetime.now(UTC)
1515

1616

1717
@asynccontextmanager
1818
async def lifespan(_: FastAPI) -> AsyncGenerator[None, None]:
1919
async def timeout():
2020
if (_timeout := getenv("CODEBOX_TIMEOUT", "15")).lower() == "none":
2121
return
22-
while last_interaction + timedelta(minutes=float(_timeout)) > datetime.utcnow():
22+
while last_interaction + timedelta(minutes=float(_timeout)) > datetime.now(UTC):
2323
await asyncio.sleep(1)
2424
exit(0)
2525

@@ -30,7 +30,7 @@ async def timeout():
3030

3131
async def get_codebox() -> AsyncGenerator[LocalBox, None]:
3232
global codebox, last_interaction
33-
last_interaction = datetime.utcnow()
33+
last_interaction = datetime.now(UTC)
3434
yield codebox
3535

3636

@@ -52,9 +52,8 @@ async def exec(
5252
async def event_stream() -> AsyncGenerator[str, None]:
5353
async for chunk in codebox.astream_exec(
5454
exec.code, exec.kernel, exec.timeout, exec.cwd
55-
):
56-
# protocol is <type>content</type>
57-
yield f"<{chunk.type}>{chunk.content}</{chunk.type}>"
55+
): # protocol is <type>content</type>
56+
yield f"<{chunk.type}>{chunk.content}</{chunk.type}>\n"
5857

5958
return StreamingResponse(event_stream())
6059

@@ -78,9 +77,10 @@ async def upload(
7877
timeout: int | None = None,
7978
codebox: LocalBox = Depends(get_codebox),
8079
) -> None:
81-
if file.filename:
82-
await codebox.aupload(file.filename, file.file, timeout)
83-
raise HTTPException(status_code=400, detail="A file name is required")
80+
if not file.filename:
81+
raise HTTPException(status_code=400, detail="A file name is required")
82+
async with asyncio.timeout(timeout):
83+
await codebox.aupload(file.filename, file.file)
8484

8585

8686
@app.post("/code/execute")

0 commit comments

Comments
 (0)