Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reload csv on update #321

Open
wants to merge 3 commits into
base: develop
Choose a base branch
from
Open

Reload csv on update #321

wants to merge 3 commits into from

Conversation

flothi
Copy link
Collaborator

@flothi flothi commented Oct 6, 2017

Dieser PR ist (noch) unvollständig, anzupassen:

  • csv-dir abhängig von der Installation (kleinigkeit)
  • BOSWatch beendet nicht sauber, da der Thread offensichtlich hängt (Großigkeit...)

Betrifft #261

Beschreibung des commit:

  • create a function to watch for changes in csv-dir
  • import pyinotify (use pip to install it if necessary) and threading
  • starting thread to work parallel
  • end thread while exiting boswatch

- create a function to watch for changes in csv-dir
- import pyinotify (use pip to install it if necessary) and threading
- starting thread to work parallel
- end thread while exiting boswatch
@flothi
Copy link
Collaborator Author

flothi commented Oct 7, 2017

Noch kurz als Erklärung, wie ich mir das ganze gedacht (und zum Teil mit Code-Schnippseln zusammengeklaut) habe:

Die Funktion csv_watch ist das Arbeitstier, wenn es um die Beobachtung des Verzeichnis geht. Der watchmanager (wm) kriegt übergeben, dass er bei einer Änderung der Dateien im Verzeichnis oder beim Erstellen einer Datei eine Aktion ausführen soll, hier das Nachladen der Beschreibungen.

Hinweise zu pyinotify sind hier: https://github.com/seb-m/pyinotify

Prinzipiell klappt das ganze auch; der Thread wird gestartet, die Aktualisierungen werden eingeladen und beim nächsten Auftreten des Alarms auch ausgegeben.

Was nicht klappt, ist das Beenden von Boswatch - das könnte sein, dass es eigentlich keine Möglichkeit gibt, einen Thread zu stoppen (daher der Kunstgriff mit der Variable run, gefunden auf sourceforge).

Eventuell hat jemand noch ne Idee, wie man das anders angehen kann.

@Schrolli91
Copy link
Owner

Schrolli91 commented Oct 7, 2017

https://docs.python.org/2/library/threading.html#thread-objects
Siehe Daemon Threads, villt hilft das

speziell hier:
https://docs.python.org/2/library/threading.html#threading.Thread.daemon
The entire Python program exits when no alive non-daemon threads are left.

Sprich wenn du den Thread als Daemon startest, dann stirbt der mit, wenn der main Thread beendet wird.

- daemonize observing thread
- csv-dir depending on installation-dir
- cleaning up the code
@flothi
Copy link
Collaborator Author

flothi commented Oct 7, 2017

Super Hinweis, danke - was so ein einzelnes Flag doch auslösen kann.

Habs eingebaut, und - oh Wunder - es tut was es soll ;-)

@flothi flothi changed the title Update boswatch.py Reload csv on update Oct 21, 2017
@Schrolli91
Copy link
Owner

@flothi
Gabs hier inzwischen irgendwelche Probleme? Oder tut das ganze was es soll?
Denn wenn das hier alles passt, würde ich so langsam mergen.

@flothi
Copy link
Collaborator Author

flothi commented Dec 14, 2017

Probleme gab's keine, zumindest sind mir keine untergekommen

@Schrolli91
Copy link
Owner

Schrolli91 commented Dec 14, 2017

Wenn ich das Richtig sehe, wird ein neuer Thread gestartet, indem die CSV Files überwacht und bei Bedarf neu nachgeladen werden?

Wird der Thread immer gestartet? Kann man das deaktivieren? Evtl macht es sinn diese Funktion in der config zu hinterlegen. Wer keine CSV Files nutzt braucht auch kein dynamisches nachladen und kann sich demzufolge die Prozessorlast auch einsparen,

@flothi
Copy link
Collaborator Author

flothi commented Dec 14, 2017

Der wird aktuell immer gestartet, man könnte das sicherlich schaltbar machen

Da fehlt mir allerdings aktuell die Zeit für

@ghost ghost assigned Schrolli91 Sep 10, 2018
@Schrolli91 Schrolli91 removed their assignment Sep 10, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants