Latest update:

1. Psycopyg2 works with connect_timeout - Direct SQL call 
2. sqlalchemy works with connect_timeout (Direct SQL call no ORM)
3. Flask-sqlalchemy works with connect_timeout (Direct SQL call, no ORM)

Next up on our troubleshooting tree..

Test sqlalchemy  with ORM calls with Connect_timeout..

Weird...

If anyone wants to look at our code to see what our app is doing: 
https://github.com/bcgov/queue-management/api

Karim


On Thursday, 27 February 2020 10:24:25 UTC-8, Mike Bayer wrote:
>
> OK so that script I gave you, the exact SQLAlchemy equivalent is:
>
>
> from sqlalchemy import create_engine
>
>
> e = create_engine("postgresql+psycopg2://scott:tiger@localhost/test", 
> connect_args={"connect_timeout": 2})
> c = e.connect()
>
>
> it also will accept it as:
>
> e = 
> create_engine("postgresql+psycopg2://scott:tiger@localhost/test?connect_timeout=2")
>
> however, in the above case the timeout is passed as a string "2" and not 
> an integer, which may interfere with it working, im not sure.   the 
> separate connect_args approach is safer.
>
>
>
> On Thu, Feb 27, 2020, at 12:57 PM, Karim Gillani wrote:
>
> Thank you for the great idea.  I did not see the forest through the 
> trees.  Haha.
>
> We have the pscopyg2 script running and things seems to be working fine 
> with that.  We can see without the connect_timeout that the delay is about 
> 2 minutes and with the connect_timeout set, the delay is only 2 seconds.
>
> Next, we are going to wrap the script (if possible) with Alchemy only and 
> test.
> Then after that, we will wrap flask-alchemy.
>
> Thanks
> Karim
>
>
>
> On Thursday, 27 February 2020 06:48:00 UTC-8, Mike Bayer wrote:
>
> Can you write a script that uses psycopg2 directly and see if you can 
> replicate the issue in that way?  this would elimiante SQLAlchemy as part 
> of the issue and you can interact with the psycopg2 developers directly:
>
> import psycopg2
>
> connection = psycopg2.connect(
>     user="scott",
>     password="tiger",
>     host="localhost",
>     database="test",
>     connect_timeout=2,
> )
>
>
> There's no need to do pdb inside of psycopg2 itself.  Within SQLAlchemy 
> you could do this at lib/sqlalchemy/dialects/postgresql/psycopg2.py however 
> only if using raw psycopg2 above proves that it solves your connection 
> issue.
>
>
> On Wed, Feb 26, 2020, at 11:19 AM, Karim Gillani wrote:
>
> Thanks.  I don't believe this is a Red Hat issue as much as a 
> configuration issue.  This is because I can replicate the issue using PSQL 
> and using the connect_timeout argument in PSQL, I can fix it.  With the 
> complexity of using flask-sqlalchemy which uses sqlalchemy to pass 
> arguments to psycopg2 to libpq, it is difficult to see where the issue 
> actually is.  Based on the links you provided, I am passing the 
> connect_timeout parameter correctly.  I am not sure what to do now.  I am 
> guessing I will need to somehow figure out if the parameter is being 
> passed.  I think I will play with getting  connection.get_dsn_parameters() 
> function to display the parameters.
>
> Karim
>
> On Wed, 26 Feb 2020 at 07:30, Mike Bayer <mik...@zzzcomputing.com> wrote:
>
>
> This would be a psycopg2 level setting which are documented at 
> https://www.psycopg.org/docs/module.html#psycopg2.connect and the 
> available values are ultimately at 
> https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-PARAMKEYWORDS
>  
> .    On the SQLAlchemy side you pass these to create_engine using 
> connect_args: 
> https://docs.sqlalchemy.org/en/13/core/engines.html?highlight=connect_args#custom-dbapi-args
>
>
>
> On Wed, Feb 26, 2020, at 12:11 AM, Karim Gillani wrote:
>
> We are using openshift which uses HAProxy.  What I am looking for is why 
> the connect_timeout may not being applied so that we can retry the call 
> after re-connect to the other database pod.  
>
> It is taking *up to two minutes* before I get 
> the psycopg2.OperationalError.  It's very strange.  The code will 
> automatically retry and work after this error shows up.  I am guessing but 
> I don't think my setup is passing the connect_timeout to libpq.
>
> Thanks
>
> On Tuesday, 25 February 2020 10:37:19 UTC-8, Mike Bayer wrote:
>
> "could not connect" means your server is unreachable from a network 
> standpoint.  You want to make sure the server is running and that it is 
> routable over the network you are trying to connect from.
>
> in an HA scenario, depending on what software is in use and how it does 
> switchover, there can be long network lags, such as if it is moving a VIP 
> from one machine to another.  You'd want to be using a proxy server such as 
> HAProxy or PGBouncer rather than relying upon changing network routing.
>
>
>
> On Tue, Feb 25, 2020, at 12:07 PM, Karim Gillani wrote:
>
> Please note I am using a Pool.  And some other connections seem to recover 
> fine.  After two minutes I get this message and things start working again:
>
> ==> AE K:11oh392; T:1; E:(psycopg2.OperationalError) could not connect to 
> server: Connection timed out> Is the server running on host 
> "patroni-mastertheq" (172.50.46.180) and accepting> TCP/IP connections on 
> port 5432?>>(Background on this error at: http://sqlalche.me/e/e3q8 ) 
> Thanks
> Karim
>
> On Tuesday, 25 February 2020 08:49:19 UTC-8, Karim Gillani wrote:
>
> I am having an issue where when my HA postgres database drops and is 
> automatically moved to a backup database, the timeout doesn't seem to be 
> working.
>
> My config.py shows the following:
>
> SQLALCHEMY_DATABASE_URI = 
> '{engine}://{user}:{password}@{host}:{port}/{name}'.format(
>
> engine=DB_ENGINE,
>
> user=DB_USER,
>
> password=DB_PASSWORD,
>
> host=DB_HOST,
>
> port=DB_PORT,
>
> name=DB_NAME,
>
> )
> SQLALCHEMY_ENGINE_OPTIONS
> = { 'pool_size' : pool_size, 'max_overflow' : max_overflow, 
> 'pool_pre_ping' : True, 'pool_timeout': DB_POOL_TIMEOUT, 'pool_recycle': 
> 3600, 'connect_args': { 'connect_timeout': 5, 'options' : '-c 
> statement_timeout=5000' } }    
>
> Is there something I set wrong?  My timeout seems to be about 2 minutes 
> instead of 5 secs.
>
> Any help would be appreciated,
>
> Thanks
> Karim
>
>
> --
> SQLAlchemy - 
> The Python SQL Toolkit and Object Relational Mapper
>  
> http://www.sqlalchemy.org/
>  
> To post example code, please provide an MCVE: Minimal, Complete, and 
> Verifiable Example. See http://stackoverflow.com/help/mcve for a full 
> description.
> --- 
> You received this message because you are subscribed to the Google Groups 
> "sqlalchemy" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to sqlal...@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/sqlalchemy/ab3e5681-d9be-468f-8160-97bddcca57fb%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/sqlalchemy/ab3e5681-d9be-468f-8160-97bddcca57fb%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
>
>
> --
> SQLAlchemy - 
> The Python SQL Toolkit and Object Relational Mapper
>  
> http://www.sqlalchemy.org/
>  
> To post example code, please provide an MCVE: Minimal, Complete, and 
> Verifiable Example. See http://stackoverflow.com/help/mcve for a full 
> description.
> --- 
> You received this message because you are subscribed to the Google Groups 
> "sqlalchemy" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to sqlal...@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/sqlalchemy/06c8e91e-4f36-4192-90d0-acbe840478ef%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/sqlalchemy/06c8e91e-4f36-4192-90d0-acbe840478ef%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
>
>
> --
> SQLAlchemy - 
> The Python SQL Toolkit and Object Relational Mapper
>  
> http://www.sqlalchemy.org/
>  
> To post example code, please provide an MCVE: Minimal, Complete, and 
> Verifiable Example. See http://stackoverflow.com/help/mcve for a full 
> description.
> --- 
> You received this message because you are subscribed to the Google Groups 
> "sqlalchemy" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to sqlal...@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/sqlalchemy/82280db0-b63e-4e31-9657-66eb8bcd79b7%40www.fastmail.com
>  
> <https://groups.google.com/d/msgid/sqlalchemy/82280db0-b63e-4e31-9657-66eb8bcd79b7%40www.fastmail.com?utm_medium=email&utm_source=footer>
> .
>
>
> --
> SQLAlchemy - 
> The Python SQL Toolkit and Object Relational Mapper
>  
> http://www.sqlalchemy.org/
>  
> To post example code, please provide an MCVE: Minimal, Complete, and 
> Verifiable Example. See http://stackoverflow.com/help/mcve for a full 
> description.
> --- 
> You received this message because you are subscribed to the Google Groups 
> "sqlalchemy" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to sqlal...@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/sqlalchemy/CAOpL_VFw3U7vZhiLnQ8gB7-zUe%3Dc14QU019w9bQ25B4jPs6MvA%40mail.gmail.com
>  
> <https://groups.google.com/d/msgid/sqlalchemy/CAOpL_VFw3U7vZhiLnQ8gB7-zUe%3Dc14QU019w9bQ25B4jPs6MvA%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>
>
>
> --
> SQLAlchemy - 
> The Python SQL Toolkit and Object Relational Mapper
>  
> http://www.sqlalchemy.org/
>  
> To post example code, please provide an MCVE: Minimal, Complete, and 
> Verifiable Example. See http://stackoverflow.com/help/mcve for a full 
> description.
> --- 
> You received this message because you are subscribed to the Google Groups 
> "sqlalchemy" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to sqlal...@googlegroups.com <javascript:>.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/sqlalchemy/c9d76a8f-a4cb-4219-8994-9594b25a0084%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/sqlalchemy/c9d76a8f-a4cb-4219-8994-9594b25a0084%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
>
>

-- 
SQLAlchemy - 
The Python SQL Toolkit and Object Relational Mapper

http://www.sqlalchemy.org/

To post example code, please provide an MCVE: Minimal, Complete, and Verifiable 
Example.  See  http://stackoverflow.com/help/mcve for a full description.
--- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sqlalchemy/c29e155b-ea8f-4d42-b869-2a8086efc7f8%40googlegroups.com.

Reply via email to