I suggest not to keep open transactions for days in any case. Keeping
the state of the application in an uncommitted transaction is usually
sign of a bug easy to fix. Some ORM users do it without understanding
the implications. (I have experience of such bad designs in Hibernate
applications I had to fix).
Keeping a long backlog becomes very expensive in terms of resorces,
and things tend to slow down. I know that PostgreSQL had some locking
issues before 9.2 because serialiazed isolation level was locking
rows.