Summary
Hello,
I’m getting that error every time i try to connect to Mongodb Atlas, but if i start app localy it works fine.
ServerSelectionTimeoutError: ac-8fsp34n-shard-00-01.su8tngo.mongodb.net:27017: connection closed,ac-8fsp34n-shard-00-00.su8tngo.mongodb.net:27017: connection closed,ac-8fsp34n-shard-00-02.su8tngo.mongodb.net:27017: connection closed, Timeout: 30s, Topology Description: <TopologyDescription id: 648d8d52875c993fdb5bdb11, topology_type: ReplicaSetNoPrimary, servers: [<ServerDescription ('ac-8fsp34n-shard-00-00.su8tngo.mongodb.net', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('ac-8fsp34n-shard-00-00.su8tngo.mongodb.net:27017: connection closed')>, <ServerDescription ('ac-8fsp34n-shard-00-01.su8tngo.mongodb.net', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('ac-8fsp34n-shard-00-01.su8tngo.mongodb.net:27017: connection closed')>, <ServerDescription ('ac-8fsp34n-shard-00-02.su8tngo.mongodb.net', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('ac-8fsp34n-shard-00-02.su8tngo.mongodb.net:27017: connection closed')>]>
Traceback:
File "/app/cards_editor/database.py", line 25, in ping
client.admin.command('ping')
File "/home/appuser/venv/lib/python3.9/site-packages/pymongo/_csot.py", line 105, in csot_wrapper
return func(self, *args, **kwargs)
File "/home/appuser/venv/lib/python3.9/site-packages/pymongo/database.py", line 805, in command
with self.__client._socket_for_reads(read_preference, session) as (
File "/home/appuser/venv/lib/python3.9/site-packages/pymongo/mongo_client.py", line 1296, in _socket_for_reads
server = self._select_server(read_preference, session)
File "/home/appuser/venv/lib/python3.9/site-packages/pymongo/mongo_client.py", line 1257, in _select_server
server = topology.select_server(server_selector)
File "/home/appuser/venv/lib/python3.9/site-packages/pymongo/topology.py", line 272, in select_server
server = self._select_server(selector, server_selection_timeout, address)
File "/home/appuser/venv/lib/python3.9/site-packages/pymongo/topology.py", line 261, in _select_server
servers = self.select_servers(selector, server_selection_timeout, address)
File "/home/appuser/venv/lib/python3.9/site-packages/pymongo/topology.py", line 223, in select_servers
server_descriptions = self._select_servers_loop(selector, server_timeout, address)
File "/home/appuser/venv/lib/python3.9/site-packages/pymongo/topology.py", line 238, in _select_servers_loop
raise ServerSelectionTimeoutError(
Steps to reproduce
Code snippet:
app.py
import streamlit as st
from streamlit_option_menu import option_menu
from streamlit_searchbox import st_searchbox
st.set_page_config(
page_title="Edytor kart ustawien",
page_icon=":hammer_and_wrench:",
layout="wide"
)
import database as db
import edytor as ed
import uploader as up
# horizontal menu
selected_menu = option_menu(
menu_title=None,
options=["Edytor", "Upload", "Statystyki"],
default_index=0,
orientation="horizontal",
)
# columns
if selected_menu == "Edytor":
st.title("Edytor")
db.ping()
database.py
import streamlit as st
from pymongo import MongoClient
from pymongo.server_api import ServerApi
# import ObjectId from bson package (part of PyMongo distribution) to enable querying by ObjecyId
from bson.objectid import ObjectId
@st.cache_resource
def init_connection():
return MongoClient("mongodb+srv://runcorx:"+ st.secrets.DB_PASS + "@cluster0.su8tngo.mongodb.net/?retryWrites=true&w=majority", server_api=ServerApi('1'))
# connect to mongodb cluster with MongoClient
client = init_connection()
# get reference to database
db = client.karty
# reference to collections
lista_narzedzi_db = db.lista_narzedzi
def ping():
try:
client.admin.command('ping')
st.write("Pinged your deployment. You successfully connected to MongoDB!")
except Exception as e:
st.write(e)
return ()
Expected behavior:
Localy it works fine
Actual behavior:
But in cloud:
I copied whole secrets.toml to app settings secrets.
Debug info
- Streamlit version: 1.23.1
- Python version: 3.11.4
- Using Conda? PipEnv? PyEnv? Pex?: Nope
- OS version: Microsoft Windows 10 Home 10.0.19045 Build 19045
- Browser version: Google Chrome 114.0.5735.134
Requirements file
streamlit==1.23.1
streamlit-option-menu==0.3.6
streamlit-searchbox==0.1.3
openpyxl==3.1.2
python-dotenv==1.0.0
pymongo==4.3.3
pandas==2.0.2
Links
- Link to your GitHub repo: GitHub - notsooSleepy/cards_editor
- Link to your deployed app: https://notsoosleepy-cards-editor-app-x9kkrz.streamlit.app/
Please help.
I don’t really have any more ideas how to approach that problem.