#FastAPI-MySql-SqlAlchemy Intermittent Broken Pipe Error

40 messages · Page 1 of 1 (latest)

covert condor
#

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?

radiant wrenBOT
#

Project ID: dba6cd6e-5ea1-494c-b77f-81377e24fbde

sinful rune
#

are you getting this error from the mysql service or your fastapi service?

covert condor
covert condor
#

Copying one by one takes long so I took a screenshot

#

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.

#

The link at the end of the screenshot

#

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

sinful rune
#

are you connecting to the database via the private network? if not, definitely do that

covert condor
#

No.

#

Should I?

#

I guess I should

sinful rune
#

yes absolutely

covert condor
#

ok. Will try that. I would have to change the connection string for that.

sinful rune
#

yep!

covert condor
#

I am sure there is an example but If I cannot find it, I'll check out the docs

sinful rune
#

what is the variable you use for the database url?

covert condor
#

SQLALCHEMY_DATABASE_URL

sinful rune
#

what is the name of your mysql service

#

and is the mysql service in the same project as the fastapi service?

covert condor
#

MySQL-9_Bm

covert condor
sinful rune
#

SQLALCHEMY_DATABASE_URL=${{MySQL-9_Bm.MYSQL_PRIVATE_URL}}

#

as easy as that

covert condor
#

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.

sinful rune
#

so what is SQLALCHEMY_DATABASE_URL set to now

#

sans the password

covert condor
#

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

sinful rune
#

that works too, until you change the internal address and forget to update that url

covert condor
#

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

sinful rune
#

no problem!

covert condor
#

Yes, it did not happen. No broken pipe errors all day. I would have already gotten a few. So this fixed it 🙂 Thanks

sinful rune
#

happy to hear that!