Ich arbeite an einem kleinen Projekt in Python. Es ist in zwei Teile geteilt.
Der erste Teil ist dafür verantwortlich, das Web zu crawlen und einige Informationen zu extrahieren und in eine Datenbank einzufügen.
Der zweite Teil ist dafür verantwortlich, diese Informationen unter Verwendung der Datenbank zu präsentieren. Beide Teile teilen sich die Datenbank. Im zweiten Teil verwende ich das Flask-Framework, um Informationen als HTML mit einigen Formatierungen, Stilen usw. anzuzeigen, damit es sauberer aussieht.
Quelldateien beider Teile befinden sich im selben Paket. Um dieses Programm ordnungsgemäß auszuführen, muss der Benutzer jedoch den Crawler und den Ergebnispräsentator wie folgt separat ausführen:
python crawler.py
und dann
python presenter.py
Alles ist in Ordnung, nur eine Sache. Was ich, welcher Präsentator zu tun ist, ist, Ergebnis im HTML-Format zu erstellen und die Seite mit Ergebnissen im Standardbrowser des Benutzers zu öffnen, aber es wird immer zweimal geöffnet, wahrscheinlich wegen der Anwesenheit der Methode run (), die Flask in einem neuen Thread startet Dinge werden für mich bewölkt. Ich weiß nicht, was ich tun sollte, um mein presenter.py zu machen, um nur ein Tab / Fenster zu öffnen, nachdem ich es ausgeführt habe.
Hier ist der Ausschnitt meines Codes:
%Vor% Ich benutze den gleichen Code unter Mac OS X (mit Safari-, Firefox- und Chrome-Browsern) die ganze Zeit, und es läuft gut. Ich nehme an, dass Sie vielleicht Flasks Auto-Reload-Funktion nutzen. Setzen Sie debug=False
und es wird nicht versucht, automatisch neu zu laden.
Andere Vorschläge, basierend auf meiner Erfahrung:
threading.Timer
. Hier ist mein Code:
%Vor% (Dies ist alles unter dem if __name__ == '__main__':
, oder in einer separaten "start app" -Funktion, wenn Sie möchten.)