With the proper PRAGMAs set and modern hardware, you can do 400+ writes/sec with 4 uvicorn workers and ~100 clients connected. The achilles heal is writing lots of large files. That will cause concurrent requests to wait around for the disk to finish writing to the WAL.
It also seems to have the same concurrency issues as described in the article. At least from my experience the "database is locked" error appears quite often.
A rather late reply, but in case anyone is reading this.... Django is basically designed to have sqlite deadlocks, and there's a trivial fix (that the dev team refused to include) that allows fixes the problem and allows you to run up to moderate loads.
Setting SQLite PRAGMAs via Django settings was recently merged. I would expect to see this show up in the next version or two of Django.
https://code.djangoproject.com/ticket/24018
With the proper PRAGMAs set and modern hardware, you can do 400+ writes/sec with 4 uvicorn workers and ~100 clients connected. The achilles heal is writing lots of large files. That will cause concurrent requests to wait around for the disk to finish writing to the WAL.
It also seems to have the same concurrency issues as described in the article. At least from my experience the "database is locked" error appears quite often.
A rather late reply, but in case anyone is reading this.... Django is basically designed to have sqlite deadlocks, and there's a trivial fix (that the dev team refused to include) that allows fixes the problem and allows you to run up to moderate loads.
https://centraltrunks.blogspot.com/2022/07/django-sqlite-dat...
https://code.djangoproject.com/ticket/29280
(I authored the rant in the first link)