Wie mit MySQL-Verbindungen umgehen?

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Jan.O
User
Beiträge: 61
Registriert: Samstag 26. April 2008, 00:32

Hallo,

Ich benutze CherryPy als ApplicationServer. Nun stellte sich mir folgende Frage: Wie sollte man am besten mit MySQL-Verbindungen umgehen, wenn die Website viele Zugriffe hat. Wann sollen verbindungen geöffnet werden?

Erstmal grundlegende Vorschläge:

a) Bei jedem request ne neue Verbindung aufmachen (uncool)
b) Eine Queue mit n Verbindungen machen und reusen

Ist MySQLdb threadsafe? Kann ich mir einfach immer eine connection aus der Queue nehmen und dann einen cursor erzeugen oder muss ich währendessen die Verbindung schützen (lock)?


Jan
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Jan.O hat geschrieben:CherryPy als ApplicationServer [...] mit MySQL
Hallo Jan!

Lesestoff:
- http://tools.cherrypy.org/wiki/Databases
- http://www.python-forum.de/topic-11150.html
- http://www.python-forum.de/topic-11839.html

Noch Fragen?

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Jan.O
User
Beiträge: 61
Registriert: Samstag 26. April 2008, 00:32

gerold hat geschrieben: Noch Fragen?

mfg
Gerold
:-)
ui, danke. Habe verstanden, wie ich es machen muss, danke. CherryPy hat ja echt ungeahnte möglichkeiten ^^.

Komisch, dass cherrypy.thread_data für jeden Thread einen verschiednen Inhalt hat. Verstehe nicht, wie das funktionieren kann...
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Jan.O hat geschrieben:Komisch, dass cherrypy.thread_data für jeden Thread einen verschiednen Inhalt hat.
Hallo Jan!

Das hängt mit ``threading.local`` zusammen. Siehe: http://docs.python.org/library/threadin ... ding.local

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Jan.O
User
Beiträge: 61
Registriert: Samstag 26. April 2008, 00:32

Ist ja interessant; was dazu gelernt.
Jan.O
User
Beiträge: 61
Registriert: Samstag 26. April 2008, 00:32

Kann ich auch einfach eine Klassenvariable vom typ threading.local() machen, und diese dann mit den entsprechenden attibuten versehen? Oder wäre das zu leicht ^^?

Edit: ja, geht
Antworten