Zdravim konferenci a obracim se s prosbou. ----- Pozn: Prave ve chvili, kdy jsem napsal tenhle prispevek me napadla jedna vec, ktera se ukazala byt spravnou. Bylo mi lito to cele mazat, tak pisu dotaz a zaroven i reseni, treba se to nekomu bude hodit. Resenim problemu je zavolani "gobject.threads_init()" pred spustenim hlavni smycky. Pokud ale znate elegantnejsi reseni, jak sestrelit Dbus sluzbu, klidne napiste :).
loop = gobject.MainLoop() gobject.threads_init() loop.run() ---- Vytvarim v pythonu DBus service, ktera se bude spoustet pomoci DBus autostart. Jedna se o mechanismus, kdy se python skript zavola ve chvili, kdy jiny proces vola sluzbu, kterou dany skript obhospodaruje. Bohuzel (lec zcela pochopitelne) zustane po vyrizeni sluzby skript viset v pameti. Nenasel jsem standardni DBusovy mechanismus, kterym by slo sluzbu ukoncit, pokud neni nejaky cas volana, proto jsem zkusil poresit toto vlastnimi silami. Pri startu sluzby chci vytvorit vlakno, ktere bude periodicky (cca ob pet az deset sekund) kontrolovat, jestli behem teto doby byla zavolana nejaka metoda sluzby. V pripade, ze nikoliv, dojde k ukonceni skriptu. Figl je v tom, ze ve chvili, kdy zavolam gobject.MainLoop() (aplikacni smycka obhospodarujici mimojine DBus), prestane mi fungovat vlakno watchdogu. Nevi nekdo, jak toto resit? Moc diky, Marek
_______________________________________________ Python mailing list [email protected] http://www.py.cz/mailman/listinfo/python
