Alternative für Socket Programmierung

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
Antworten
maik_tml
User
Beiträge: 2
Registriert: Dienstag 17. Juni 2014, 12:22

Hallo,

Kürzlich habe ich eine Python Extension für TML/SIDEX (BEEP (Block Extensible Exchange Protocol) basierte Lösung für viele Aufgaben, die normalerweise mit der Implementierung eines eigenen TCP/IP Socket Protokolls gelöst werden würden) veröffentlicht.
TML/SIDEX benötigt eine Lizenz. Die Python Extension wird mit Quellcode ausgeliefert und läuft auf Windows, Linux und OS-X mit Python ab Version 2.5 bis 3.4. Ältere Python Versionen sollten funktionieren, sind aber nicht getestet.

Beschreibung der Extension mit Videos
Download Seite

Hier ein Beispiel für einen RPC Server, der auch einen Fortschritt sendet, während ein Kommando abgearbeitet wird.

Code: Alles auswählen

import tml.core
import time

def cmd42handler(tmlprofile, cmd):
   cmd.data['Result']['Value'] = 42
   cmd.data['Result']['Test'] = "some text"
 
def cmd43handler(tmlprofile, cmd):
   cmd.data['Result']['Value'] = 43
   cmd.data['Result']['Test'] = [1, 2, 3, 'test', 3.14]
 
def cmd44_progress_test(tmlprofile, cmd):
   time.sleep(1)
   for p in range(0, 100, 10):
       cmd.data['Result']['Progress'] = p
       time.sleep(0.5)
       cmd.progress = p
 
def main():
   tmlcore = tml.core.TMLCore()
   tmlcore.listener_binding = "127.0.0.1:12345"
 
   cmdprofile = "http://www.tml-software.com/tml_rpc_server/test"
 
   # register a command and profile
   tmlcore.profiles.add_profile(cmdprofile)
 
    # register commands
   tmlcore.profiles[cmdprofile].register_cmd(42, cmd42handler)
   tmlcore.profiles[cmdprofile].register_cmd(43, cmd43handler)
   tmlcore.profiles[cmdprofile].register_cmd(44, cmd44_progress_test)
 
   tmlcore.listener_enabled = True
 
   run() # wait until CTRL-C is pressed (not in this script)
 
if __name__ == '__main__':
   main()
Das Beispiel zeigt die implementierung von drei Kommandos. cmd44_progress_test gibt während es ausgeführt wird einen Fortschritt an den Aufrufer zurück (Single Call Multiple Answer).

Viele Grüße,
Maik
Antworten