Avanti-W: Lange Jobs

Konsistorium EKsOL allegro at eksol.de
Mi Dez 13 13:20:16 CET 2000


Sehr geehrter Frau Koczian, liebe Liste,
>
> Uebrigens: lieber Herr Bachschneider, die Update-Klasse in Python, die Sie
> mir schon vor langer Zeit geschickt haben, scheint mir potentiell dasselbe
> Problem zu haben - da werden ja auch zweihundert Saetze in einen
Update-Job
> geschrieben und es gibt nur einen send-Befehl dafuer. Passiert da nichts?
>
Aus meiner Erinnerung war das eine sichere Einstellung.
Die Sache mit dem Rückgabewert von send() sehen Sie bedingt richtig.
Herr Bergers Antwort stimmt für den Job, aber es gibt schon einen Grund mit
dem Rückgabewert umzugehen.
Wenn Sie eine gepufferte! Ausgabe wollen geht das unter Python so (Nicht
ausprobiert, sondern aus anderem Zusammenhang entnommen):

class sockclient ():
    def __init__ (self, host, port):
        ....
        self.buffer = ""
    ....
    def writable (self):
        return (len(self.buffer) > 0)
    def handle_write (self):
        sent = self.send (self.buffer)
        self.buffer = self.buffer[sent:]
if __name__ == '__main__':
    ....
    s = sockclient()
    while s.writeable():
        s.handle_write()

Die alten Pythonklassen habe ich nicht mehr im Gebrauch, unser Intranet
läuft mit PHP4, Stand-Alone-Clients mit dem Winsock32.ocx.
Meine akutellen Pythonklassen setzen auf Medusa auf (asyncore, asynchat).
Deshalb hier das Arbeiten mit einem Buffer.
Asynchrone Sockets bringen aber im Zusammenspiel mit Avanti momentan nichts,
da Avanti das (auch und vor allem aus Gründen der Ablauflogik) momentan
nicht unterstützt. UDP-Datagramme sind deshalb ebenfalls sinnlos. Eine echte
Alternative wäre wirklich nur ein COM/DCOM-Server, zumal das m.E. über RPC
läuft.
Als kritische Größe erweist sich allerdings nach einigem Probieren die Größe
des Socketbuffers, etwa bei recv(4096). Client und Server sollten die
gleichen Einstellungen haben. Mit 4096 habe ich bislang die besten
Erfahrungen gemacht.

An Herrn Berger:
>Ueberwachung uebertraegt und empfaengt. Ich hatte das
>Programm geschrieben, um Herrn Bachschneiders(?) Problem
>mit den verschluckten Ergebnissen zu reproduzieren, daher
>werden viele kurze Jobs generiert.
Nein ich hatte keine verschluckten Jobs!
Aber was Ihr Perl-Script angeht eine Idee. Könnte es sein, daß der Socket im
Streßbetrieb nicht geschlossen wird und Sie Avanti überfüttern - wie eine
Gans beim Mästen?
Hab ich auch schon gemacht und mich ständig gewundert, warum andere Clients
nicht zum Zuge kamen und Avanti irgendwann den Heldentod starb.

MfG

Volker Bachschneider

----- Original Message -----
From: Sibylle Koczian <Sibylle.Koczian at Bibliothek.Uni-Augsburg.de>
To: Diskussionsliste Allegro-C <allegro at buch.biblio.etc.tu-bs.de>





Mehr Informationen über die Mailingliste Allegro