Achten Sie auf eine Datei mit asyncio

8

Ich versuche, eine gute Methode zu finden, um das Aussehen einer Datei mit Pythons Asynchronbibliothek . Das ist, was ich bis jetzt gefunden habe:

%Vor%

Ich habe dies als watch_for_file.py gespeichert und kann es mit

ausführen %Vor%

In einer anderen Shell-Sitzung stelle ich

aus %Vor%

um die Schleife zu beenden.

Gibt es eine elegantere Lösung als die Verwendung dieser Endlosschleife und yield from asyncio.sleep() ?

    
gotgenes 16.10.2014, 21:17
quelle

3 Antworten

6

Nun, es gibt nettere, plattformspezifische Möglichkeiten, benachrichtigt zu werden, wenn eine Datei erstellt wird. Gerrat ist in seinem Kommentar mit einem für Windows verknüpft, und pyinotify kann für Linux verwendet werden. Diese plattformspezifischen Ansätze können wahrscheinlich in asyncio eingefügt werden, aber Sie würden am Ende eine ganze Menge Code schreiben, um es plattformunabhängig zu machen, was sich wahrscheinlich nicht lohnt, nur nach dem Aussehen zu suchen einer einzelnen Datei. Wenn Sie dazu noch eine ausgefeiltere Dateisystem-Überwachung benötigen, ist es vielleicht sinnvoll, diese zu verfolgen. Es sieht so aus, als könnte pyinotify angepasst werden, um eine Unterklasse der Klasse Notifier hinzuzufügen, die in die Ereignisschleife asyncio eingefügt wird (es gibt beispielsweise bereits Klassen für tornado und asyncore ).

Für Ihren einfachen Anwendungsfall denke ich, dass Ihre Endlosschleife beim Abrufen in Ordnung ist, aber Sie könnten auch Rückrufe mit der Ereignisschleife planen, wenn Sie möchten:

%Vor%

Ich bin mir aber nicht sicher, dass das viel eleganter ist als die Endlosschleife.

Bearbeiten:

Nur zum Spaß schrieb ich eine Lösung mit pyinotify :

%Vor%     
dano 16.10.2014 22:59
quelle
4

Butter Ссылка unterstützt asyncio direkt aus der Box, BTW.

%Vor%     
Andrew Svetlov 17.10.2014 17:40
quelle
1

Laut der Dokumentation können Sie nun Dateideskriptoren ansehen . Dies sollte Ihnen helfen, dies mit viel weniger Code zu lösen.

    
Bob Van de Vijver 20.09.2016 15:10
quelle