R
Railway4w ago
yavuz

FastAPI-MySql-SqlAlchemy Intermittent Broken Pipe Error

Hi everyone I keep getting BrokenPipeError: [Errno 32] Broken pipe error from MySQL using SqlAlchemy. It usually happens right when logging in or refreshing tokens. Meaning.. right at the first use after not using for a while. I am the only user plus a few test users so the API service is not continuously used. Did anybody see this? What could be the reason. Could it be a time out issue with MySql?
Solution:
are you connecting to the database via the private network? if not, definitely do that
Jump to solution
26 Replies
Percy
Percy4w ago
Project ID: dba6cd6e-5ea1-494c-b77f-81377e24fbde
Brody
Brody4w ago
are you getting this error from the mysql service or your fastapi service?
yavuz
yavuz4w ago
Sorry.. Project Id: dba6cd6e-5ea1-494c-b77f-81377e24fbde I think from SqlAlchemy
yavuz
yavuz4w ago
Copying one by one takes long so I took a screenshot
No description
yavuz
yavuz4w ago
Sql Alchemy says:... OperationalError Exception raised for errors that are related to the database’s operation and not necessarily under the control of the programmer, e.g. an unexpected disconnect occurs, the data source name is not found, a transaction could not be processed, a memory allocation error occurred during processing, etc. This error is a DBAPI Error and originates from the database driver (DBAPI), not SQLAlchemy itself.
yavuz
yavuz4w ago
No description
yavuz
yavuz4w ago
The link at the end of the screenshot https://sqlalche.me/e/20/e3q8 It usually happens, after first login if I have not used for a while. Or... again after not using right at the time of refreshing JWT tokens
Solution
Brody
Brody4w ago
are you connecting to the database via the private network? if not, definitely do that
yavuz
yavuz4w ago
No. Should I? I guess I should
Brody
Brody4w ago
yes absolutely
yavuz
yavuz4w ago
ok. Will try that. I would have to change the connection string for that.
Brody
Brody4w ago
yep!
yavuz
yavuz4w ago
I am sure there is an example but If I cannot find it, I'll check out the docs
Brody
Brody4w ago
what is the variable you use for the database url?
yavuz
yavuz4w ago
SQLALCHEMY_DATABASE_URL
Brody
Brody4w ago
what is the name of your mysql service and is the mysql service in the same project as the fastapi service?
yavuz
yavuz4w ago
MySQL-9_Bm Yes, they are in the same project
Brody
Brody4w ago
SQLALCHEMY_DATABASE_URL=${{MySQL-9_Bm.MYSQL_PRIVATE_URL}} as easy as that
yavuz
yavuz4w ago
Great.. Will do.. Thanks a lot for this OK. I kept everything the same on the SqlAlchemy connection string, except the URL. For the URL I just used the MySQL service name MySQL-9_Bm and not even the port number since it was suggested in the network settins of MySQL... Everything worked.
Brody
Brody4w ago
so what is SQLALCHEMY_DATABASE_URL set to now sans the password
yavuz
yavuz4w ago
So, If I don't get the broken pipe error again, this means it was because I was using the Newtork URL mysql+pymysql://user_name:my_password@mysql-9bm/database_Name That is an example SqlAlchemy URL for pymysql driver
Brody
Brody4w ago
that works too, until you change the internal address and forget to update that url
yavuz
yavuz4w ago
Yeah, I don't know why I did not setup the link internally. Network URL does not make sense when I have the chance to use internal. Thanks again Brody
Brody
Brody4w ago
no problem!
yavuz
yavuz4w ago
Yes, it did not happen. No broken pipe errors all day. I would have already gotten a few. So this fixed it 🙂 Thanks
Brody
Brody4w ago
happy to hear that!