[python] [VYRESENO] gobject + threading

slush slush na centrum.cz
Sobota Červen 28 22:51:51 CEST 2008


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
------------- dal¹í èást ---------------
HTML p?íloha byla odstran?na...
URL: http://www.py.cz/pipermail/python/attachments/20080628/c39cbdc2/attachment.htm 


Další informace o konferenci Python