2010-10-30 5 views
2


J'essaie d'écrire une petite application qui permet d'envoyer des commandes dbus (à Amarok) via une page web.
J'utilise python + mod_wsgi, car j'ai besoin d'exécuter le script avec le même utilisateur qu'Amarok.

Lorsque je me connecte à l'Amarok via un shell normal, cela fonctionne. Mais après la connexion par le script, je reçois l'erreur suivante:Connexion Dbus via mod_wsgi en python

DBusException: org.freedesktop.DBus.Error.Spawn.ExecFailed: /usr/bin/dbus-launch terminated abnormally with the following error: Autolaunch error: X11 initialization failed. 

Le code qui se connecte à l'Amarok:

import dbus 
conn = dbus.SessionBus().get_object('org.kde.amarok','/Player') 

Savez-vous ce que dois-je faire pour se connecter via dbus Amarok?
Merci beaucoup pour votre aide!

Mise à jour: Je vais vous donner quelques informations supplémentaires sur la configuration:

httpd.conf:

LoadModule wsgi_module modules/mod_wsgi.so 
WSGIScriptAlias /amarok /var/www/amarok-python/config.wsgi 
WSGIDaemonProcess l user=wojtas group=wojtas processes=1 
WSGIProcessGroup l 


config.WSGI:

import sys 
path='/var/www/amarok-python' 
if path not in sys.path: 
    sys.path.append(path) 
import index 
application=index.application 

Code de l'application (index .py):

import dbus 
from os import getuid 
def connect(): 
     conn = dbus.SessionBus().get_object('org.kde.amarok','/Player') 
     conn.Start() 
     return conn 
def application(environ,start_response): 
    status= '200 OK' 
    connection=connect() 
    output=str(getuid()) 
    response_headers= [('Content-type','text/html'), ('Content-Length', str(len(output)))] 
    start_response (status,response_headers) 
    return [output] 
+0

personne? Je n'ai pas trouvé de réponse jusqu'à présent – stuudent

Répondre