On Wed, Mar 25, 2009 at 10:22 AM, Pet <petshm...@googlemail.com> wrote: > On Tue, Mar 24, 2009 at 6:10 PM, Alvin Delagon <adela...@gmail.com> wrote: >> 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. > > Hi, > > thanks for example! > In that way, I'm getting error: > > exceptions.AttributeError: MyProtocol instance has no attribute 'factory' > > How can MyProtocol access self.factory.dbcon?
Ups! I didn't followed exactly your example and tried to access self.factory.dbcon in __init__ of MyProtocol, so I've got an error. If I access self.factory.dbcon in lineReceived it seems to work. But I don't really understand, why can I access factory in lineReceived and not in __init__. Pet > > > Pet > > > > >> >> >> >> On Wed, Mar 25, 2009 at 12:22 AM, Pet <petshm...@googlemail.com> wrote: >>> >>> On Tue, Mar 24, 2009 at 5:04 PM, Rob Hoadley <hoad...@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 <adela...@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 <petshm...@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@twistedmatrix.com >>> >>> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python >>> >> >>> >> >>> >> >>> >> -- >>> >> http://www.alvinatorsplayground.blogspot.com/ >>> >> >>> >> _______________________________________________ >>> >> Twisted-Python mailing list >>> >> Twisted-Python@twistedmatrix.com >>> >> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python >>> >> >>> >> >>> > >>> > _______________________________________________ >>> > Twisted-Python mailing list >>> > Twisted-Python@twistedmatrix.com >>> > http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python >>> > >>> >>> _______________________________________________ >>> Twisted-Python mailing list >>> Twisted-Python@twistedmatrix.com >>> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python >> >> >> >> -- >> http://www.alvinatorsplayground.blogspot.com/ >> >> _______________________________________________ >> Twisted-Python mailing list >> Twisted-Python@twistedmatrix.com >> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python >> >> > _______________________________________________ Twisted-Python mailing list Twisted-Python@twistedmatrix.com http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python