从rhythmbox插件启动python web服务器

2024-06-16 11:45:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图实现一个类似于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(测试)


Tags: django方法self服务器插件hostmakeserver
1条回答
网友
1楼 · 发布于 2024-06-16 11:45:36

在查看了github.com/fossfreedom/rhythmweb处的代码后,我确定了问题所在:

我正在导入gobject而不是gobject地理信息库. 现在一切都很好!:)

感谢fossfreedom的提示!在

相关问题 更多 >