我试图实现一个类似于rhythmeb的rhythmox插件,但是在插件中启动HttpServer时遇到了一个问题。在
如果我像平常一样启动服务器(例如,使用make_server(…).server_forever()),插件会阻止Rhythbox。所以我看了rhythmweb,但是每次我向服务器发出请求时都会得到一个segfault。我就是这么做的:
class WSGIRefWebServer(IDjangoWebServer):
def __init__(self, host, port, settings):
IDjangoWebServer.__init__(self, host, port, settings)
def _start_server(self):
django_handler = django.core.handlers.wsgi.WSGIHandler()
self.__server = make_server(self._host, self._port, django_handler)
self._is_running = True
def request_loop(source, cb):
self.__server.handle_request()
return True
gobject.io_add_watch(self.__server.socket, gobject.IO_IN, request_loop)
如果我用self替换最后一行__永远的server.server_()一切正常,但Rhythbox被封锁了。在
我的第二种方法是在一个新的线程中启动web服务器,这很好,但是在django应用程序中使用rhythmbox shell对象时遇到了一些问题。在
所以我在寻找一种方法,启动一个web服务器,它不会阻塞rhythmbox,而是在同一个线程中运行。 我不明白为什么第一种方法会导致segfault,因为rhythmeb也是这样做的。在
我希望你能帮我解决我的问题。在
顺便说一句:我在DebianSqueeze上使用了Python2.7和RhythyBox 2.97(测试)
在查看了github.com/fossfreedom/rhythmweb处的代码后,我确定了问题所在:
我正在导入gobject而不是gobject地理信息库. 现在一切都很好!:)
感谢fossfreedom的提示!在
相关问题 更多 >
编程相关推荐