allgemeine probleme bei der erstellung einer web app

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

EnTeQuAk hat geschrieben:
Costi hat geschrieben: trotzdem werde ich mySQL statt posgreSQL benutzen
@Gerold:
Nicht traurig sein... du schaffst es noch, ein paar Benutzer zu PostgreSQL zu konvertieren :D


MfG EnTeQuAk
Ich bin gerade von MySQL auf postgresSQL umgestiegen :)
Und mir kommt so schnell kein MySQL mehr auf die Platte, es sei denn es ist nötig ;)
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Und wo ist der connection pool?
TUFKAB – the user formerly known as blackbird
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

blackbird hat geschrieben:Und wo ist der connection pool?
Hallo blackbird!

Diese Frage verstehe ich nicht. 10 Threads -- 10 Connections. Wenn man eine Connection an ``cherrypy.thread_data`` bindet, dann hat man einen Pool von (bei Standardeinstellung) zehn Connections offen. Ich glaube, dass ich damit nicht wirklich falsch liege. Es ist aber auch schon eine Weile her, dass ich mir ein wenig CherryPy-Quellcode angesehen habe.

Oder wie hast du die Frage gemeint?

lg
Gerold
:-)
Zuletzt geändert von gerold am Samstag 8. September 2007, 14:08, insgesamt 1-mal geändert.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

apollo13 hat geschrieben:Ich bin gerade von MySQL auf postgresSQL umgestiegen :) Und mir kommt so schnell kein MySQL mehr auf die Platte, es sei denn es ist nötig ;)
Hallo apollo13!

<Geld auf die Hand blätter...> Und hier die versprochenen 10 Euro. Und das Bier geht auf mich. :lol: :wink:

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

gerold hat geschrieben:
blackbird hat geschrieben:Und wo ist der connection pool?
Hallo blackbird!

Diese Frage verstehe ich nicht. 10 Threads -- 10 Connections. Wenn man eine Connection an ``cherrypy.thread_data`` bindet, dann hat man einen Pool von (bei Standardeinstellung) zehn Connections offen. Ich glaube, dass ich damit nicht wirklich falsch liege. Es ist aber auch schon eine Weile her, dass ich mir ein wenig CherryPy-Quellcode angesehen habe.
Dann hast du einach nur 10 Threads mit 10 Verbindungen. Also MySQL zb öffnet gestorbene Verbindungen nicht automatisch neu. Zumindest wäre mir das neu. Außerdem kannst du dir auf diese weiße nicht zwei Verbindungen in einen Thread holen oder eine Transaktion beenden lassen während der User schon seine Seite bekommen hat.
TUFKAB – the user formerly known as blackbird
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

gerold hat geschrieben:@EnTeQuAk: Aber deine Variante, glaube ich, wird vom CherryPy-Team vorgeschlagen. Aber irgendwie finde ich im Moment nichts darüber im CherryPy-Wiki.
Hallo EnTeQuAk!!

Jetzt weiß ich wieder, wo ich etwas über Connections in Threads gelesen hatte:

- http://tools.cherrypy.org/wiki/SQLObjec ... Connection
- http://tools.cherrypy.org/wiki/Databases

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Hallo blackbird!
blackbird hat geschrieben:MySQL zb öffnet gestorbene Verbindungen nicht automatisch neu.
Wenn so etwas öfter vor kommt, dann kann man ja etwas dagegen tun:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-

import psycopg2
import cherrypy

DSN = "dbname='postgres' user='irgendeiner' host='localhost' password='irgendeines'"


def get_conn():
    try:
        conn = cherrypy.thread_data.connection
        # Connection testen
        cur = conn.cursor()
        cur.execute("SELECT CURRENT_TIMESTAMP")
        cur.fetchone()
    except (NameError, psycopg2.ProgrammingError):
        conn = cherrypy.thread_data.connection = psycopg2.connect(DSN)
    
    return conn 

#...
Ich halte diesen Overhead für verschwindend gering. Deshalb hätte ich auch unter Server-Vollast kein Problem damit.
blackbird hat geschrieben:nicht zwei Verbindungen in einen Thread holen
``get_conn1()`` und ``get_conn2()``
Viel mehr, gleichzeitig offene, Verbindungen je Thread werde ich selten benötigen. Man kann es sicher andes lösen, aber sicher nicht einfacher.
blackbird hat geschrieben:eine Transaktion beenden lassen während der User schon seine Seite bekommen hat.
An so einen Fall kann ich mich jetzt nicht erinnern. -- Darüber habe ich noch nicht nachgedacht. Da müsste man wahrscheinlich irgendwie mit einer globalen Datenbankverbindung arbeiten, die dann die Jobs per Queue bekommt. So z.B.: http://aspn.activestate.com/ASPN/Cookbo ... ipe/496799

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Antworten