在电子中运行/停止Django开发服务器

时间:2016-07-31 20:37:46

标签: python django server electron

我开始使用Electron并且拥有Python和Django的一些经验。这就是我想要实现的目标,

  1. 使用Electron创建一个桌面应用程序,它将充当前端。
  2. 使用python for back-end来完成所有繁重的工作。通过繁重的工作,我的意思是广泛的文本处理。
  3. 使用Django作为桥梁,以简单的网页形式显示python产生的结果(即电子)
  4. 我所知道的,

    1. Electron感觉更加实用,高效并且提供了不那么丑陋的UI组件,而不是tkinter等。因此选择坚持使用Electron。
    2. 从过去几天的谷歌搜索中,我知道node.js有一些处理文本的模块,但实际上它并不像python那样有效。此外,由于我对python更加熟悉以及我打算使用自然语言处理这一事实,我想坚持使用python。
    3. 使用Django更多的是个人偏好,因为我以前使用它并且有一点不用担心(考虑到Electron有一些学习曲线)。
    4. 我有知识(虽然有限),

      1. Rodeo做了类似的事情,但他们还没有详细说明。从这一点来说,我所知道的就是可以做到的。只是四处闲逛以获得答案'如何'。
      2. Another article讨论在Electron中运行Haskell服务器。从这开始,我尝试通过以下实现来适应django,但我再次拒绝错误连接,这很可能是由于服务器无法运行,

        function createBackendServer () {
          backendServer=child_process.spawn([path/to/venv/python],['manage.py','runserver'])}
        
      3. 有了这个,我的成功有限。我已经能够运行Django服务器,但我无法杀死服务器。为此,我使用了以下代码,

        `app.on('will-quit', function() {
          backendServer.kill()
        })`
        

        还有,

        `app.on('window-all-closed', function () {
          if (process.platform !== 'darwin') {
            app.quit()
            backendServer.kill()
          }
        })`
        

        这些似乎都不起作用,因为我仍然可以看到python运行的实例,并且仍然可以从Web浏览器访问URL 127.0.0.1:8000。牢记这一切,我有以下问题,

        1. 如何在应用程序关闭后停止Django服务器?
        2. 目前,为了产生一个孩子,我使用绝对路径,这是非常错误的。如何使用安装在虚拟环境文件夹中的python实例(windows中的venv / Scripts / python)将其转换为相对路径并运行服务器?

1 个答案:

答案 0 :(得分:0)

在我的代码中添加 SIGNIT 效果很好

mainWindow.on('closed', function() {
  mainWindow = null;
  py_process.kill('SIGINT');
});