pymongo.errors.ServerSelectionTimeoutError | Setting up MongoDB

Hi, I am trying to use MongoDB in my project . I have also mentioned the credentials in secret TOML of the app.
However, it shoots me this error
“pymongo.errors.ServerSelectionTimeoutError”

App : https://share.streamlit.io/shubh2016shiv/bio-medicalqa/main/app.py
GitHub Repo: GitHub - shubh2016shiv/Bio-MedicalQA

So when I select the option “Search Bio-Topics & Questions” in navigation, it basically tries to create a new DB : BioASQ and populate the records in MongoDB after reading the data. This is where the issue seems to popping up. In local MongoDB, it is running correctly, however, on streamlit, something seems to be missing which I am not able to figure out. The function in app.py where MongoDB setup is being done is : “def setupMongoDB():”

Kindly suggest the changes necessary for this.

Thanks
Shubham Singh

I think I saw this kind of Error for 2 different reasons so far.

  1. The database is not reachable from where you are deploying your app (however, I’m not sure if it was this exact Error or if it was a connection error directly)

  2. When I cached a database connection and it timed out at some point, I think on the database side.
    I solved this by giving my cached database setup function a timestamp as an input argument which changes every couple of minutes so that the connection would be re-established before it timed out.

I think you are doing something similar to caching in your code by only initializing the client once. After some time the database will cut the connection due to a timeout at which point you would have to reconnect.

Hope I could help you.

1 Like