Great question — answering as the UphillTech team:
I ran into something similar while building a LangChain pipeline with ChromaDB locally, so I can share what worked for me. The Timeout/Locked errors you’re seeing usually happen because the local PersistentClient is basically SQLite under the hood. SQLite can handle multiple reads fine, but when multiple writes happen at the same time, it throws locks. So it’s not a bug, it’s just how file-based persistence works. I’ve hit this a bunch when trying to parallelize stuff too aggressively. What helped me was limiting how many parallel tasks actually hit the DB at the same time. In Python async, I wrapped my calls in a semaphore like this: import asyncio semaphore = asyncio.Semaphore(3) # only 3...
Full answer by Umesh Chaudhary: https://stackoverflow.stackexchange.com/a/79903663 (CC BY-SA 4.0).
Need it done for your business? UphillTech.