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
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()
?
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
:
Butter Ссылка unterstützt asyncio direkt aus der Box, BTW.
%Vor%Laut der Dokumentation können Sie nun Dateideskriptoren ansehen . Dies sollte Ihnen helfen, dies mit viel weniger Code zu lösen.
Tags und Links python python-3.x python-asyncio