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.
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

timedelta: OverflowError: integer multiplication

Beitragvon jens » Donnerstag 8. Februar 2007, 15:47

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...

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Donnerstag 8. Februar 2007, 15:59

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

Also so:

Code: Alles auswählen

delta = datetime.timedelta(days=7)

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
BlackJack

Beitragvon BlackJack » Donnerstag 8. Februar 2007, 16:13

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)
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Donnerstag 8. Februar 2007, 19:54

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 Modvoice
Benutzeravatar
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Beitragvon mitsuhiko » Donnerstag 8. Februar 2007, 20:05

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

Beitragvon jens » Freitag 9. Februar 2007, 11:38

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.

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Freitag 9. Februar 2007, 13:09

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???

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Freitag 9. Februar 2007, 13:43

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

CMS in Python: http://www.pylucid.org
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

Beitragvon birkenfeld » Freitag 9. Februar 2007, 19:58

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
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Montag 12. Februar 2007, 09:05

Ah, das stimmt!

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

CMS in Python: http://www.pylucid.org
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

Beitragvon birkenfeld » Montag 12. Februar 2007, 09:06

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

http://pythonic.pocoo.org/
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Montag 12. Februar 2007, 09:12

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?

CMS in Python: http://www.pylucid.org
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

Beitragvon birkenfeld » Montag 12. Februar 2007, 11:51

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

http://pythonic.pocoo.org/
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Montag 12. Februar 2007, 12:01


CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd

Wer ist online?

Mitglieder in diesem Forum: Google [Bot]