| Frühere | Chronologischer Index | Spätere | ||
| Vorherige | Thematischer Index | Nächste |
Danke, habe das so gelöst (siehe Anhang).
Eine sehr gute Woche und darüber hinaus wünscht Peter
Am Mi., 4. Aug. 2021 um 21:35 Uhr schrieb Susanne & Udo Krause <
su.krause@XXXXXXX.ch>:
> Hallo Peter,
>
> das ist sehr allgemein geftragt, in den Bezug der Grössen (Ihr Beispiel
> sEntity) sollte man es nicht verladen, die übliche Vorgehensweise ist
>
> - die möglichen Zustände definieren (Konstanten mit erinnerbarer
> Bedeutung)
> - initialisierung
> - Verbingungsaufnahme
> - Datenbezug
> - Aktion_1
> - Aktion_2
> - Verbingungsabbau
> - ende
>
> das Stichwort ist eine finite state machine; das kann mehrmals gemacht
> werden,
> wenn die Daten beisammen sind, kann man die Bearbeitung in eine eigene
> finite
> state machine auslagern (vulgo das nächste While ...) bis alles getan ist.
>
> Dann ist muss man sich die Reaktionen überlegen, ein permanentes While
> ohne Fehlerbehandlung (i.e. mal ein Päuschen einlegen) ist nicht sinnvoll,
> irgendwann soll auch mal aufgehört werden. Im Pseudocode
>
> enum {
> none = 1,
> init,
> connect,
> connecting,
> connected,
> interrupt,
> querying,
> gotit,
> initfail,
> connectfail,
> ....
> } states;
>
> bool doContinue = true;
> int state = states.none;
> int ret = 1; -- 0 ist gut
> int maxFail = 7;
> int failed = 0;
>
> while ( doContinue) {
> switch (state) {
> case states.none:
> ret = prepare_initialisation();
> if ( !ret)
> state = states.init;
> else
> doContinue = false;
> break;
>
> case states.init:
> ret = prepare_connection();
> if ( !ret) {
> state = states.connect;
> failed = 0;
> }
> else {
> -- im Zustand init bleiben
> ++failed;
> if ( failed > maxFail)
> doContinue = false;
> }
> break;
>
> ...
> case states.connected:
> ret = get_data( which ones etc);
> if ( !ret) {
> state = state.querying;
> failed = 0;
> }
> else {
> if ( data_usable())
> state = state.querying; -- handle it
> else
> state = states.interrupted;
> -- set back;
> }
> break;
>
> ...
> case states.interrupted:
> ret = set_back(); -- kann eine Pause enthalten, Kontrollen etc.
> if ( !ret) {
> state = states.connected;
> failed = 0;
> }
> else {
> -- im Zustand interrupted bleiben
> ++failed;
> if ( failed > maxFail)
> doContinue = false;
> }
> break;
>
> ...
> default:
> -- sollte einem nicht passieren: maule übel
> }
> }
>
> das kann auch in Mathematica gemacht werden; um z.B. eine
> Internetadresse zu prüfen, kann es nützlich sein, von dort einen ping
> zu bekommen und erst nach Erhalt fortzusetzen, der bekannte R. E. Ference
> empfiehlt
>
> https://reference.wolfram.com/language/guide/ExternalOperations.html
>
> externe Operationen müssen sich auf die externen Gegebenheiten einstellen.
> Wenn kein Präsenzcheck angeboten wird, muss man auf etwas anderes
> ausweichen.
>
> Es kann auch sehr nützlich sein (check_data()) bereits erhaltene Daten
> lokal zu speichern, im Ernstfall kann dafür - falls vorhanden - eine
> Versionskontrolle verwendet werden ( erfolgreiche Änderungen werden
> committed oder pushed), so dass man in jedem Fall ein Stückchen weiterkommt
> und beim nächsten Run nicht erneut die Daten aus dem Netz holen muss,
> sondern aus der lokalen Quelle lädt und dann fortsetzt.
>
> HTH
>
> Udo.
>
>
>
>
> Am 04.08.2021 um 00:42 schrieb Peter Klamser via demug:
>
> ... es geht also darum so lange mit einer While Schleife Entity zu pollen,
> bis kein Fehler mehr vorliegt,
> Damit kann ich eine längere Berechnung bei einem Netzwerkfehler retten.
> Danke sagt Peter
>
> Am Di., 3. Aug. 2021 um 22:33 Uhr schrieb Peter Klamser <klamser@XXXXXXX.com> <klamser@XXXXXXX.com>:
>
>
> Hallo,
>
> beim Abrufen einer Entity kann ein Netzwerkfehler auftreten, wenn z.B. der
> ISP meint, er müsse irgendwas ändern, wobei dann kein Zugang zu WRI besteht.
>
> Ich habe das versucht mit einer Enclose ConfirmQuiet konstrukt abzufangen.
> Aber so ganz klappt das nicht.
>
> Wie geht das?
>
> Eine gute Woche wünscht Peter
>
>
> _______________________________________________
> DMUG Deutschsprachiges Mathematica-Forum demug@mathematica.chhttp://www.mathematica.ch/mailman/listinfo/demug
> Archiv: http://www.mathematica.ch/archiv.html
>
>
stored Entity with managing network connecting errors.nb
Description: application/vnd.wolfram.nb
_______________________________________________ DMUG Deutschsprachiges Mathematica-Forum demug@XXXXXXX.ch http://www.mathematica.ch/mailman/listinfo/demug Archiv: http://www.mathematica.ch/archiv.html
| Frühere | Chronologischer Index | Spätere | ||
| Vorherige | Thematischer Index | Nächste |
DMUG-Archiv, http://www.mathematica.ch/archiv.html