timedelta: OverflowError: integer multiplication

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Hab einen merkwürdigen Fehler:

Traceback:

Code: Alles auswählen

delta = datetime.timedelta(seconds=maxAge)
OverflowError: integer multiplication
maxAge ist dabei 604800

Ist ein CGI mit 2.3.5 (#2, Oct 16 2006, 19:19:48) [GCC 3.3.5 (Debian 1:3.3.5-13)]

Wie kann das sein? Lokal kann ich das nicht nachvollziehen, aber ich hab auch kein Python 2.3...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

OK, meine Lösung: ich nehme days statt die Sekunden ;)

Also so:

Code: Alles auswählen

delta = datetime.timedelta(days=7)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
BlackJack

Mit 2.3.5 kann ich es auch nicht nachvollziehen:

Code: Alles auswählen

Python 2.3.5 (#2, Oct  5 2006, 22:06:14)
[GCC 4.0.3 (Ubuntu 4.0.3-1ubuntu5)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import datetime
>>> datetime.timedelta(seconds=604800)
datetime.timedelta(7)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

BlackJack hat geschrieben:Mit 2.3.5 kann ich es auch nicht nachvollziehen:
Tritt auch unter Python 2.5 nicht auf.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Auch unter 2.4 nicht
TUFKAB – the user formerly known as blackbird
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ich kann es ja selber lokal auch nicht nachvollziehen. Ich glaube es liegt irgendwie am Server.

Hierbei kommt auch ein Fehler:

Code: Alles auswählen

md5pass = u'e564b583a9e21b6d2b209c775701b457'
int(md5pass, 16)
Traceback: OverflowError: string/unicode conversion
Das klappt bei mir lokal auch einwandfrei.

Der Fehler "string/unicode conversion" sieht irgendwie auch nicht wie ein normaler Python Fehler aus, oder?

Kann es sein das es eigentlich nur ein "warning" ist? Zumindest nach einer google Suche zu urteilen, könnte es so sein.

Ich habe nämlich das gemacht:

Code: Alles auswählen

warnings.filterwarnings('error',category=Warning)
Ich möchte nämlich alle MySQLdb Warnungen wirklich sehen. Kann man das auf diese Modul beschränken?
Oder aber ich packe die Warnungen in mein SQL-Logging rein. Weiß jemand wie man das machen kann?
Ein schneller Hack wäre es, alle stderr Ausgaben ins SQL-Logging umzuleiten.

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Aha! Bin ein Schritt weiter... Es liegt an den warnings: http://test.htfx.info/test.py

Wobei, lokal funktioniert es. Auf dem Server in einer console auch, aber nicht in der CGI Version :shock:

Weiß jemand warum???

Irgendwelche Apache Limits???

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ich habe es jetzt... Wenn man alle MySQLdb Warnungen als Exceptions haben möchte, geht das so:

Code: Alles auswählen

from MySQLdb import Warning as MySQLdbWarning

warnings.filterwarnings('error',category=MySQLdbWarning)
Ich mache es allerdings nun anders... Ich biege die Warnungen (Die normalerweise wohl nach stderr gehen) in ein andere file-like-object um, so:

Code: Alles auswählen

        from MySQLdb import Warning as MySQLdbWarning

        def showwarning(message, category, filename, lineno):
            if category == MySQLdbWarning:
                self.page_msg(message, category, filename, lineno)

        warnings.showwarning = showwarning

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Du weißt aber, dass das ziemlich unsauber ist, wenn du nicht mal für andere Warnungen die ursprüngliche showwarning()-Funktion aufrufst?
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ah, das stimmt!

Doch wie mache ich das am besten??? Also wie komme ich an die Original showwarning Funktion herran?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Ist das ne Fangfrage?
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ne, das war ernst gemeint!

So könnte es gehen:

Code: Alles auswählen

old_showwarning = warnings.showwarning

def showwarning(message, category, filename, lineno):
    if category == MySQLdbWarning:
        self.page_msg(message, category, filename, lineno)
    else:
        old_showwarning(message, category, filename, lineno)

warnings.showwarning = showwarning
Wie besser machen?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Nicht nötig, das ist genau der richtige Weg.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:


GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten