Connect failed: Connection timed out

[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Prozess nach Überschreiten einer Zeitgrenze abbrechen

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

Prozess nach Überschreiten einer Zeitgrenze abbrechen

Martin Fischer
  
Beiträge gesamt: 12779

9. Jul 2019, 16:19
Beitrag # 1 von 9
Bewertung:
(2422 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Liebe Kollegen,

gibt es eine Weg, einen Prozess (z.B. Öffnen eines Dokuments) während der Ausführung eines Skripts nach Überschreiten einer bestimmten Dauer (z.B. 5 Min.) abzubrechen, zu protokollieren und mit dem nächsten Prozess fortzufahren?

Quasi einen Task in den Hintergrund auslagern und ggf. zu killen?
X

Prozess nach Überschreiten einer Zeitgrenze abbrechen

Gerald Singelmann
  
Beiträge gesamt: 6269

10. Jul 2019, 07:16
Beitrag # 2 von 9
Beitrag ID: #571040
Bewertung:
(2383 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich lehne mich mal ganz weit aus dem Fenster.

JavaScript läuft in einem Single Thread. Salopp gesagt bedeutet das, dass ein JavaScript Interpreter immer genau eine Zeile Code nach der anderen abarbeitet – möglicherweise auf verschlungenen Wegen, aber immer eine nach der anderen.

Während der Bearbeitung eines Befehls kann der Interpreter auch nichts anderes machen.
Die Bedeutung von $.sleep(2000) ist daher nicht: "Ich lege mal ein paar Sekunden die Füße hoch und schau dem Rest des Systems beim Arbeiten zu", sondern "Für 2 Sekunden passiert hier gar nichts!"

Ich weiß nicht, ob das irgendwo in der Dokumentation steht, aber mein Eindruck ist, dass InDesign auch nur einen JavaScript-Interpreter am Laufen hat.
Das würde bedeuten, dass man per JavaScript (b) nicht den Ablauf eines anderen JavaScripts (a) beobachten kann. Denn b kommt ja erst zum Zuge, wenn a fertig ist.

Außerdem arbeitet im Gegensatz zur Webumgebung JavaScript in InDesign fast grundsätzlich synchron.

Das Laden einer Ressource im Web-Kontext sind letztlich zwei getrennte Scripte:

a1) Sag dem System, welche URL du willst und gib eine Weckruf-Funktion an, die aufgerufen wird, sobald das System damit fertig ist.
a2) Script a ist fertig.

b1) Weckruf-Funktion wird vom System aufgerufen
b2) b arbeitet Daten der Ressource ab.
b3) b ist fertig

Synchrones arbeiten in InDesign läuft hingegen so ab

c1) c sagt InDesign, es soll ein Dokument öffnen
c2) c wartet darauf, dass das Dokument offen ist
c3) InDesign hat das Dokument geöffnet, die Kontrolle geht wieder an c zurück und c macht weiter

Während c2 kann kein anderer JavaScript Befehl in InDesign ausgeführt werden.

Wie gesagt: Das ist mein Verständnis, das ich mir zusammengereimt habe. Ob das tatsächlich im Detail anders ist, müsste jemand nachtragen, der die Dokumentationen (SDK etc) gründlich studiert hat.

Falls ich richtig liege, ist die Konsequenz jedenfalls, dass dein Anliegen innerhalb von InDesign nicht lösbar ist.

Du müsstest die Kontrolle einem Prozess außerhalb von InDesign übergeben, der ggf. auch in der Lage ist, InDesign (oder Teile davon) abzuschießen.

Ich habe so recht keine Vorstellung, welcher Weg da gangbar wäre. Ob man z.B. in Nodejs etwas aufsetzen könnte oder ob AppleScript diese Art von Prozesssteuerung zulässt...
Kann sein, weiß ich nicht.

Das alles im Wesentlichen, um das Gespräch in Gang zu bringen :)


als Antwort auf: [#571032]

Prozess nach Überschreiten einer Zeitgrenze abbrechen

WernerPerplies
Beiträge gesamt: 2760

10. Jul 2019, 07:47
Beitrag # 3 von 9
Beitrag ID: #571041
Bewertung:
(2375 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin Herr Singelmann,

ich denke, Sie haben die Situation gut beschrieben.

Ich löse solche Aufgaben, in dem ich je nach Situation entweder mit einem InDesign-Skript oder einem externen Skript ein Verzeichnis überwache.

Ich kann dann direkt mit einer Datei Aktionen auslösen oder mit dem Inhalt der Datei Parameter übergeben.

Das sollte eigentlich immer funktionieren.

Um auf die ursprüngliche Frage zurückzukommen:

1. Ein externes Programm (z. B. per Apple Script mit Filewatcher und Timer-Event per Indesign-Skript starten)
2. InDesign per Skript eine Datei öffnen lassen und am Ende des Vorganges eine externe Datei erzeugen.
3. Das externe Programm wartet auf diese Datei und wenn Sie nicht rechtzeitig erzeugt wird, bricht dieses Programm InDesign ab und startet es ggf. neu.
4. Über ein InDesign-Startupscript könnte man sogar die Kontrolle wieder an InDesign übergebn.


als Antwort auf: [#571040]

Prozess nach Überschreiten einer Zeitgrenze abbrechen

Martin Fischer
  
Beiträge gesamt: 12779

10. Jul 2019, 09:00
Beitrag # 4 von 9
Beitrag ID: #571044
Bewertung:
(2361 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Gerald,

vielen Dank für Deine anschaulichen Ausführungen, die ich gut nachvollziehen kann.

Antwort auf: Falls ich richtig liege, ist die Konsequenz jedenfalls, dass dein Anliegen innerhalb von InDesign nicht lösbar ist.


Genau dies hatte ich befürchtet und so gegenüber dem Kunden kommuniziert.
Aber weil das im gegebenen Fall so gravierend ist, wollte ich mir dies gerne von kompetenter Seite bestätigen lassen.

Danke dafür.


Herr Perplies,
Ihr Ansatz klingt vielversprechend.
InDesign abschießen (und neu starten) ist eine Hammermethode. Daran hatte ich in meinem Skript noch nicht gedacht.
Ich will mal sehen, ob ich das tatsächlich so realisieren will (und kann).

Vielen Dank auch für Ihre Anregung.


Zum Hintergrund:
Per Skript sollen nacheinander viele InDesign-Dateien (als Kopie) geöffnet und analysiert werden (Protokollierung verwendeter Schriften). Die meisten InDesign-Dateien werden dabei aus früheren Versionen hochkonvertiert. Darunter gibt es ein paar Kandidaten, die sich in der aktuellen CC-Version nicht öffnen lassen. InDesign steht entweder lange still und wartet auf einen Abschuss oder stürzt von sich aus irgendwann mal ab.
Die diesen Prozess auslösende Datei kann dem Protokoll entnommen und für's nächste Mal ausgeschlossen werden. Aber der Prozess als solcher ist zunächst mal beendet und muss zur Untersuchung aller weiteren Dateien ganz neu gestartet werden (auch bereits bearbeitete Dateien werden erneut geprüft).

Nun werde ich erst mal versuchen herauszufinden, wie häufig solche Störungen auftreten (vermutlich eher im Promille- als im Prozentbereich) und prüfen, ob mit Holzhammer oder einer weicheren Variante beizukommen wäre.


Vielen Dank für die Anregungen!


als Antwort auf: [#571040]
(Dieser Beitrag wurde von Martin Fischer am 10. Jul 2019, 09:20 geändert)

Prozess nach Überschreiten einer Zeitgrenze abbrechen

Martin Fischer
  
Beiträge gesamt: 12779

10. Jul 2019, 09:25
Beitrag # 5 von 9
Beitrag ID: #571046
Bewertung:
(2352 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Eine weichere Methode könne folgendermaßen funktionieren:

Die Pfade erfolgreich ausgewerteter und Problem auslösender Dateien werden protokolliert und von einer erneuten Auswertung bei einer erneuten Ausführung des Skripts nach einem händischen Abschuss oder einem Absturz von InDesign ausgeschlossen.

Oder die erfolgreich ausgewerteten und die Problem auslösenden Dateien werden umbenannt:
19-07-10_meineInDesignDatei.indd
=> 19-07-10_meineInDesignDatei_GUT.indd bzw.
=> 19-07-10_meineInDesignDatei_SCHLECHT.indd

und über dieses Anhängsel bei der nächsten Skriptausführung übergangen.


als Antwort auf: [#571044]
(Dieser Beitrag wurde von Martin Fischer am 10. Jul 2019, 09:27 geändert)

Prozess nach Überschreiten einer Zeitgrenze abbrechen

WernerPerplies
Beiträge gesamt: 2760

10. Jul 2019, 09:33
Beitrag # 6 von 9
Beitrag ID: #571047
Bewertung:
(2346 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin Herr Fischer,

Zitat Ihr Ansatz klingt vielversprechend.
InDesign abschießen (und neu starten) ist eine Hammermethode. Daran hatte ich in meinem Skript noch nicht gedacht


Diese Methode habe ich übrigens zum ersten Mal bei der Bearbeitung von Corel- Ventura-Dateien eingesetzt, dabei ging es darum, fehlerhafte Stellen innerhalb der Dateien zu finden, die Corel Ventura ab einer bestimmten Stelle zum Absturz brachten.

Viel Erfolg bei Ihrem Projekt.


als Antwort auf: [#571044]

Prozess nach Überschreiten einer Zeitgrenze abbrechen

Martin Fischer
  
Beiträge gesamt: 12779

10. Jul 2019, 10:13
Beitrag # 7 von 9
Beitrag ID: #571048
Bewertung:
(2331 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
[off topic]

Antwort auf: Bearbeitung von Corel- Ventura-Dateien

Ventura Publisher, mein Einstieg in den Werksatz in den späten 80ern.
Damals noch von Xerox und unter DR GEM.
Rasend schnell – gemessen an den damals verfügbaren Hardwarekomponenten.
Textformatierungen mit ASCII Code-Markierungen im Textmodus sehr gut vorzubereiten und zu kontrollieren.

Allerdings mit ein paar satztechnischen Einschränkungen, die mich zur (Bastel-)Arbeit mit PageMaker "zwangen".
Quark war Quark. ;-)

Später VP unter Corel und Windows gefühlt unstabiler als unter Xerox und GEM.

Was ist nur aus GEM und was aus Ventura geworden?

[/off topic]



Antwort auf: Viel Erfolg bei Ihrem Projekt.

Danke für die Aufmunterung.

Über die Beiträge oben sind mir neue Ideen zum Umgang mit den unerwünschten Situationen gekommen. Es tut gut, Dinge gemeinsam mit anderen zu überlegen und abzuwägen.
20on20


als Antwort auf: [#571047]

Prozess nach Überschreiten einer Zeitgrenze abbrechen

WernerPerplies
Beiträge gesamt: 2760

10. Jul 2019, 10:20
Beitrag # 8 von 9
Beitrag ID: #571049
Bewertung:
(2328 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
[off topic]
Zitat Später VP unter Corel und Windows gefühlt unstabiler als unter Xerox und GEM.

Ja, keine Frage, konnte allerdings auch viel mehr.
Zitat Was ist nur aus GEM und was aus Ventura geworden?

leider tot, aber es gibt immer noch Anwender!
[/off topic]


als Antwort auf: [#571048]

Prozess nach Überschreiten einer Zeitgrenze abbrechen

Gerald Singelmann
  
Beiträge gesamt: 6269

11. Jul 2019, 09:43
Beitrag # 9 von 9
Beitrag ID: #571061
Bewertung:
(2234 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
"Eine weichere Methode könne folgendermaßen funktionieren: "

So habe ich das mal für einen Kunden gelöst.
Sprich: Du stattest das Script mit einem Gedächtnis aus, von welchen Dateien es die Finger lassen soll und welche Dateien schon fertig sind. Und dann wird das Script halt mehrfach gestartet, bis alles weg ist.
Funktionierte gut.

Die Hauptarbeit damals war das Interface, wie man dem Anwender mitteilt, was grad passiert ist ;)


als Antwort auf: [#571046]
X