Seite 1 von 1

Längers Warten auf Filesystem möglich?

Verfasst: Montag 26. November 2012, 11:05
von Marvanek
Hallo zusammen,

ich bin eher am Anfang meiner python-Karriere und stehe jetzt vor einem Problem, das sich nicht ohne weiteres durch eine Google Suche beheben lässt:

1. ich lese nacheinander viele files (ganz simpel mit file = open('pfad') ) aus einem Netzwerkordner.

2. In unregelmässigen Abständen erhalte ich folgende Fehlermeldung:
IOError: [Errno 22] invalid mode ('r') or filename: ...

Ich erkläre mir den Fehler folgendermaßen:

Der Fehler tritt auf, weil das filesystem zu träge auf die Anfrage zum Öffnen reagiert.
Dies passiert deshalb unregelmäßig, weil die Netzwerkantwortzeit schwankt, meistens ok ist, aber manchmal eben nicht.

Meine Frage:
Gibt es eine Möglichkeit die Standardzeit die python dem Betriebssystem einräumt auf eine "read" anfrage zu antworten zu erhöhen?

Schon mal Danke für eventuelle Antworten!

Gruß Marvanek

Re: Längers Warten auf Filesystem möglich?

Verfasst: Montag 26. November 2012, 11:28
von BlackJack
@Marvanek: Python räumt dem Betriebssystem da gar nichts ein, das ruft einfach nur die entsprechende Funktion der C-Bibliothek auf und an der Stelle ist es völlig egal ob die Datei auf einer lokalen Festplatte oder einer Netzfreigabe liegt. Wie lange auf eine Verbindung oder Antwort gewartet wird, ist eine Frage des Betriebssystems. Und auf diese Ebene wollen/sollten sich normale Anwenderprogramme gar nicht hinunter bewegen. Wenn das nicht ordentlich konfiguriert ist, müsste das Problem mit anderen Programmen, die auf die Netzfreigabe zugreifen ja auch auftreten.

Ist es denn tatsächlich so, dass Du die *selbe* Datei mal lesen kannst und mal nicht? Oder ist es immer bei den gleichen Datei(nam)en? Dann wären diese Namen interessant. Wie kommen die Zustande? Enthalten sie Sonderzeichen? Gibt es ein Kodierungsproblem?

Sind die Dateien eventuell Schreibgeschützt, oder hat genau zu dem Zeitpunkt vielleicht ein anderes Programm die Dateien exklusiv geöffnet?

Re: Längers Warten auf Filesystem möglich?

Verfasst: Montag 26. November 2012, 12:38
von Marvanek
@BlackJack: Vielen Dank für die schnelle Antwort.

Ich lese eine Liste aus ca. 100 Dateien ein. Der Fehler tritt entweder gar nicht oder zufällig an irgendeiner Stelle auf.

Ich glaube deshalb, dass es mit dem Dateizugriff auf den Netzwerkordner zusammenhängt, weil der Fehler nicht auftritt wenn ich die Dateien zuerst lokal speichere.

Die Dateien heißen alle gleich, liegen aber im durchnummerierten Ordnern (z.B. 1-99).

Grüße

Marvanek

Re: Längers Warten auf Filesystem möglich?

Verfasst: Montag 26. November 2012, 12:47
von sparrow
Wenn es wirklich daran liegt, könntest du natürlich bei dem Auftreten des Fehlers "kurz warten" und dann den nächsten Leseversuch starten.

Re: Längers Warten auf Filesystem möglich?

Verfasst: Montag 26. November 2012, 13:41
von EyDu
Schließt du die Dateien auch wieder? Generell empfiehlt sich das with-Statement zum Öffnen von Dateien und nicht dein ``fp = open(x)``-Ansatz.

Re: Längers Warten auf Filesystem möglich?

Verfasst: Montag 26. November 2012, 17:04
von Marvanek
@sparrow: Die Idee klingt gut. Da hätte ich auch selber drauf kommen können! Danke!

Danke an alle für eure Mühen.

Kann gerne geschlossen werden...

Re: Längers Warten auf Filesystem möglich?

Verfasst: Montag 26. November 2012, 17:16
von EyDu
Mir sieht es ein wenig danach aus, als würdest du irgendwo etwas übersehen oder du hast das Schreiben der Quelldateien noch nicht ganz durchdrungen. Ich würde auf jeden Fall nach einer richtigen Lösung suchen und einem Workaround über das zeitliche Verhalten. Dieser Hack hat ein gutes Potenzial, dass dir da mal etwas um die Ohren fliegt und du nur schwer hinter die Ursache kommst.