snakeseven hat geschrieben:Also, das Reinladen der externen Methode funktioniert nach wie vor, aber wenn ich den 'Test' Button drücke, kennt er wieder 'subprocess' nicht. Blöd, genauso weit wie vorher.
Wenn ich 'Lookat' aus einem HTML Document aus aufrufe, bekomme ich eine andere Fehlermeldung (name 'Tk' unknown).
Hi Seven!
Tu dir einen Gefallen und trenne Zope und GUI-Funktionen. Schreibe dir einen kleinen XMLRPC-Server oder einen TCP-Server, starte diesen unabhängig von Zope und steuere diesen Server mit kleinen Nachrichten.
Andererseits -- du hattest ja schon eine einfache Trennung mit Textdateien. Was ist dabei schief gegangen? Es wäre doch ziemlich einfach, in einem gemeinsamen Ordner kleine Textdateien mit "Anweisungen" zu hinterlegen. Diese sperrst du während der Erstellung mit Lock-Dateien, so dass kein anderes Programm rein pfuscht. Diesen Ordner untersuchst du alle paar Sekunden nach neuen Anweisungen.
Als Dateinamen nimmst du am Besten "time.time()". Dann hast du ja schon die Reihenfolge, in der die Befehle abgearbeitet werden sollen.
Von Zope (Externe Methode) aus:
1. Mit time.time() den Dateinamen eruieren.
2. Prüfen ob die Datei oder deren Lockdatei schon existieren. Wenn Ja - noch einmal von vorne beginnen und neuen Namen ermitteln.
2. Lockdatei für die Datei erstellen
3. Datei erstellen und Anweisung rein schreiben.
4. Lockdatei löschen.
Steuerprogramm (Mini-Serverprogramm):
1. Alle Dateien des gemeinsamen Ordners auslesen (z.B. mit glob.glob())
2. Dateien die eine Lockdatei besitzen, wieder aus der Liste löschen
3. Liste mit Dateinamen sortieren
4. Die Datei mit den ältesten Anweisungen mit einer Lockdatei sperren.
5. Die Anweisung ausführen
6. Die Datei mit den Anweisungen löschen
7. Lockdatei löschen.
8. time.sleep(1) (je nach Dringlichkeit)
9. Schleife beginnt von vorne.
Die Vorteile dieser Methode:
- Trennung von Zope und GUI
- Zope ist sofort wieder Verfügbar, auch wenn das Serverprogramm noch Minuten lang arbeitet -- Zope wird nicht daran gehindert, weitere Anforderungen entgegen zu nehmen.
- Das Server-Programm kann alle Funktionen von Python 2.4 uneingeschränkt nutzen.
- etc.
lg
Gerold
