Seite 1 von 1

WsWin beendet sich nicht automatisch bei niedriger Prioritä

Verfasst: 23 Feb 2005 09:34
von Hogi
Hallo *.*,

ich benutze die WsWin V2.82.1 um meine Daten aus der 2500er auszulesen und in eine MySQL Datenbank zu speichern. Da dies auf meinem Server läuft und keine anderen Prozesse "gestört" werden sollen habe ich einen geplanten Task eingerichtet, der dies alle 5 Minuten macht. Klappt auch generell prima. Wenn allerdings andere Prozesse (wie bsw. Datensicherung mit WinRAR) die CPU voll belasten und der Task anläuft, dann beendet sich WsWin nicht automatisch und wird 5 Minuten später wieder gestartet mit dem gleichen Problem, wenn die Sicherung dann noch läuft usw... Dann passiert es, dass WsWin 5-6 mal läuft und keine Daten mehr eingelesen werden können. Ich kille dann alle WsWin Tasks und dann geht's wieder.

Der Job sieht folgendermassen aus:

Code: Alles auswählen

START "Wetterdaten einlesen" /BELOWNORMAL /WAIT C:\Programme\WsWin\WsWin32.exe /auto /no
In der WsWin.cfg habe ich den Timeout Wert schon auf 0 gesetzt, damit sich WsWin nach dem Einlesen sofort wieder beendet und diese 10 sec nicht abwartet. Ich vermute, dass WsWin bei niedriger Priorität nicht schnell genug reagiert und irgendwann dann auf nen Fehler läuft, den ich allerdings nicht sehen kann, da der Task unter einem Systemaccount läuft.

Vorschlag an die Entwickler: Wie wärte es mit nem Parameter, dass der WsWin Prozess nur 1x laufen darf, so dass man das programm nicht mehrfach laufen lassen kann.

Hat jemand ne Idee, was man da besser machen kann?

Verfasst: 23 Feb 2005 10:13
von Hamburg-Wetter
Hi

als erstes würde ich mir die neuste Version 2.85.2 von WsWin mal runterladen ( geht natürlich nur wenn du bei Werner regestriert bist )

Und dann würde ich einfach mal den TimeOut auf 10 Sek. setzen, stört doch keinen wenn WsWin 10 Sek länger läuft oder einfach mal die Priorität höher setzen.

gruß

Verfasst: 23 Feb 2005 10:32
von jekno
Hogi hat geschrieben: dass der WsWin Prozess nur 1x laufen darf, so dass man das programm nicht mehrfach laufen lassen kann.
Also das würde ich mir auch wünschen, denn:

Manchmal arbeite ich an WsWin und über den Taskscheduler lasse ich automatisch WsWin 1x zur vollen Stunde selbst abarbeiten.
Dann passiert es eben, das die COM-Schnittstelle nicht gefunden wird und alles was sonst noch damit zusammenhängt.
So muss ich eben, wenn ich an WsWin "manuell" arbeite, den automatischen Start deaktivieren.

Verfasst: 24 Feb 2005 23:37
von Werner
Hallo,

also ich halte überhaupt nichts davon, ein Programm - in diesem speziellen Fall WsWin - mit einer niederen Priorität laufen zu lassen.

Speziell im Wetterbereich benötigt ein Wetterprogramm vollkommene Kontrolle für die Wetterstation.

... mit dieser Massnahme möchte man Wetterdaten sammeln und doch wieder nicht sammeln ...

Mehrfach starten:
Ich hatte bereits einmal geplant, den mehrfachen Start zu unterbinden.

Aber damit raubt man sich die Möglichkeit, das Programm mehrfach zu verwenden - deshalb lehne ich diese Option ab.

Ein Benutzer eines Wetterprogrammes sollte sich schon bewußt sein, für was er dieses Programm einsetzt.

Werner

Verfasst: 24 Feb 2005 23:57
von weneu
Hallo,
hatte gestern schon den Bleistift in der Hand :) , wollte aber Werner nicht vorgreifen, bzw. niemand beeinflussen.
Ich halte es gerade für einen der großen Vorzüge von WSWIN, dass es mehrmals gestartet werden kann. Es soll ja auch Leute geben (ich kenne da einen in Donauwörth), die eine Instanz von WSWIN normal verwenden, mit einer zweiten eine Date wie ws_pc.dat überwachen und mit einer dritten alle möglichen Tests ausführen.

Verfasst: 25 Feb 2005 00:22
von jekno
weneu hat geschrieben: mit einer zweiten eine Date wie ws_pc.dat überwachen und mit einer dritten alle möglichen Tests ausführen.
Aus dieser Sicht und Verwendung ist´s natürlich besser und logisch!
Ich mache das wiederum an verschiedenen Rechnern ...der Server liest automatisch die Dtaen aus und erledigt den Upload usw. und für Versuche benutze ich mein Notebook(was ich überall hin mitnehmen kann :D - WLAN) und greife über´s LAN auf die ausgelesenen Daten des Servers zu.
Doch manchmal muss ich am Server eingreifen um irgendwas an WsWin zu ändern, oder sonst was. Dann wäre es wieder nützlich, wenn keine weitere Instanz von WsWin geöffnet werden kann.
Aber sei´s drum, ich habe mich im Laufe der Jahre an die Prozedur gewöhnt.

Eventuell wäre es nicht schlecht, wenn es eine Option gäbe, dies zu beeinflussen. Vielleicht in Form einer Abfrage (die in WsWin aktiviert/deaktiviert werden kann) um den Nutzer selbst entscheiden zu lassen, wie er damit umgeht.
Ich weiss nicht, ob das programmiertechnisch möglich ist?

Verfasst: 29 Apr 2005 08:07
von Hogi
Hallo Werner,
also ich halte überhaupt nichts davon, ein Programm - in diesem speziellen Fall WsWin - mit einer niederen Priorität laufen zu lassen.

Speziell im Wetterbereich benötigt ein Wetterprogramm vollkommene Kontrolle für die Wetterstation.

... mit dieser Massnahme möchte man Wetterdaten sammeln und doch wieder nicht sammeln ...
Also da muss ich dir widersprechen. Das mit der Priorität hat schon seinen Grund, da ich WsWin auf meinem Server laufen lasse, wo auch MySQL und Apache läuft. Da aber WsWin beim Einlesen der Daten und abarbeiten der Dateien ca. 10sec auf 100% läuft kann ich meinen Web- Besuchern nicht zumuten 10sec zu warten, bis Apache die Seiten liefert. Also sollte WsWin zwar die volle Kontrolle über die Schnittstelle bekommen (da gbe ich dir Recht), aber CPU mäßig eine niedrigere Prio, da das Auslesen der Daten länger dauern darf und nicht so zeitgritisch ist, wie das Bedienen der Web-Besucher.

Das Programm durchaus mehrfach zu Starten ist in Eurem Falle sinnvoll. Gerade zum Testen verschiedener Datenquellen. Aber den Benutzer dies entscheiden zu lassen wäre in meinen Augen idealer.

Verfasst: 29 Apr 2005 10:38
von Klaus
:lol: Hallo Hogi,
das mit der MySql-Einleserei interessiert mich brennend.
Bitte mal posten wie das geht!
Danke
:lol:

Verfasst: 29 Apr 2005 10:59
von Hogi
@Klaus,

geht ganz einfach. Mit dem Taskmanager lasse ich alle 5min folgendes Script ablaufen:

Code: Alles auswählen

START "Wetterdaten einlesen" /HIGH /WAIT C:\Programme\WsWin\WsWin32.exe /auto /all
"C&#58;\Programme\MySQL\MySQL Server 4.1\bin\mysql.exe" --host=localhost -uroot -p<dein_passwort> --database log < Import_wetterdaten.sql
IF %errorlevel% == 0 DEL C&#58;\Programme\WsWin\data\ws_newdata.csv 
Die Import_wetterdaten.sql sieht so aus:

Code: Alles auswählen

LOAD DATA LOW_PRIORITY INFILE 'C&#58;/Programme/WsWin/data/ws_newdata.csv' INTO TABLE wetterstation FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' IGNORE 2 LINES &#40;date,time,temp_wohnzimmer,temp_aussen,temp_milena,temp_jasmina,feuchte_wohnzimmer,feuchte_aussen,feuchte_milena,feuchte_jasmina,luftdruck,taupunkt&#41;;
UPDATE wetterstation SET datetime = CONCAT&#40;RIGHT&#40;date,4&#41;,'-',SUBSTRING&#40;date,4,2&#41;,'-',LEFT&#40;date,2&#41;,' ',time,'&#58;00'&#41; WHERE datetime IS NULL
Wenn das Einlesen geklappt hat, dann lösche ich die ws_newsdata.csv wieder, um beim nächsten Einlesen die Werte nicht wieder zu übernehmen.
Das UPDATE mache ich, damit ich eine datetime Spalte bekomme, wo ich meine Abfragen drüber laufen lasse. Dann muss ich nicht immer Datum und Zeit zusammen rechnen und habe auch nur einen Index in der Tabelle.

Gegenfrage: Ich war auf deiner Webseite und habe dein WebCam Bild gesehen. Ich hab sowas auch auf meiner Seite unter http://engmaenner.dyndns.org/wetter aber ich suche noch nach ner WebCam Software, die man als Dienst laufen lassen kann, da ich nicht immer am Server angemeldet sein will. Kennst du da was passendes?