[Twisted-Python] db connections

Alvin Delagon adelagon at gmail.com
Tue Mar 24 11:10:17 MDT 2009


Something like this:

from twisted.protocols import basic
from twisted.internet import protocol, reactor
from twisted.enterprise import adbapi

class MyProtocol(basic.LineReceiver):
    def __init__(self):
        pass

    def lineReceived(self, line):
        ### dbcon can be accessed via self.factory
        print dir(self.factory.dbcon)

class MyFactory(protocol.ServerFactory):
    protocol = MyProtocol
    def __init__(self):
        self.dbcon = adbapi.ConnectionPool("pyPgSQL.PgSQL", database="data",
user='pet', host='local', password='some')

if __name__ == "__main__":
    reactor.listenTCP(8080, MyFactory())
    reactor.run()

I usually put persistent data on the factory so that protocol instances can
access them such as {username:<protocol instance>} dictionary for chatroom
server.



On Wed, Mar 25, 2009 at 12:22 AM, Pet <petshmidt at googlemail.com> wrote:

> On Tue, Mar 24, 2009 at 5:04 PM, Rob Hoadley <hoadley at gmail.com> wrote:
> > You'd want to use a connection pool to manage the db interaction.
> > Your server is pretty unusable after a db connection failure.  I've
> > used the connection pool before with a cp_min of 1 and a cp_max of 2.
>
> Honestly speaking, I don't understand, what does it mean.
> I'm already using connection pool with default cp_min an max, don't I?
> Could you explain me, as for a newbie, please
>
> >
> >
> http://twistedmatrix.com/documents/8.2.0/api/twisted.enterprise.adbapi.ConnectionPool.html
> >
> >
> > On Tue, Mar 24, 2009 at 6:45 AM, Alvin Delagon <adelagon at gmail.com>
> wrote:
> >> Put self.dbcon in the MyFactory class. MyProtocol instances can access
> it
> >> via self.factory.
> >>
> >>
> >> On Tue, Mar 24, 2009 at 6:10 PM, Pet <petshmidt at googlemail.com> wrote:
> >>>
> >>> Hi,
> >>>
> >>> I've wrote an daemon which does some queries to db and sends response
> >>> back to client. Do I need to make for every request from client (new
> >>> instance of  MyProtocol) a new connection to DB? Or can I somehow
> >>> prepare connection, so I could save some time? Maybe make connection
> >>> in Factory and pass it to Protocol? But what happens if too much
> >>> clients are connected to server? What is the way to control it?
> >>>
> >>> Regards, Pet
> >>>
> >>>
> >>> class MyProtocol(basic.LineReceiver):
> >>>
> >>>    def __init__(self):
> >>>        print "new connection"
> >>>        self.dbcon = adbapi.ConnectionPool("pyPgSQL.PgSQL",
> >>> database="data", user='pet', host='local', password='some')
> >>>
> >>>
> >>> class MyFactory(protocol.ServerFactory):
> >>>    protocol = MyProtocol
> >>>
> >>> class MyService(internet.TCPServer):
> >>>    def __init__(self):
> >>>        internet.TCPServer.__init__(self,PORT,MyFactory())
> >>>
> >>> def main():
> >>>    reactor.listenTCP(PORT, MyFactory())
> >>>    reactor.run()
> >>>
> >>>
> >>> if __name__ == '__main__':
> >>>    main()
> >>>
> >>> _______________________________________________
> >>> Twisted-Python mailing list
> >>> Twisted-Python at twistedmatrix.com
> >>> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
> >>
> >>
> >>
> >> --
> >> http://www.alvinatorsplayground.blogspot.com/
> >>
> >> _______________________________________________
> >> Twisted-Python mailing list
> >> Twisted-Python at twistedmatrix.com
> >> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
> >>
> >>
> >
> > _______________________________________________
> > Twisted-Python mailing list
> > Twisted-Python at twistedmatrix.com
> > http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
> >
>
> _______________________________________________
> Twisted-Python mailing list
> Twisted-Python at twistedmatrix.com
> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
>



-- 
http://www.alvinatorsplayground.blogspot.com/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: </pipermail/twisted-python/attachments/20090325/cf283f05/attachment.html>


More information about the Twisted-Python mailing list