Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Electron中运行/停止Django开发服务器_Python_Django_Server_Electron - Fatal编程技术网

Python 在Electron中运行/停止Django开发服务器

Python 在Electron中运行/停止Django开发服务器,python,django,server,electron,Python,Django,Server,Electron,我刚开始学习Electron,对Python和Django有一些经验。这就是我想要实现的目标 使用充当前端的Electron创建桌面应用程序 使用python作为后端来完成所有繁重的工作。所谓繁重,我指的是广泛的文本处理 使用Django作为桥接器,以简单web页面(即Electron)的形式显示python生成的结果 据我所知 Electron感觉更可用、更高效,并且提供的UI组件不像tkinter等那样难看。因此选择坚持使用Electron 从过去几天的谷歌搜索中,我知道node.js有一些

我刚开始学习Electron,对Python和Django有一些经验。这就是我想要实现的目标

  • 使用充当前端的Electron创建桌面应用程序
  • 使用python作为后端来完成所有繁重的工作。所谓繁重,我指的是广泛的文本处理
  • 使用Django作为桥接器,以简单web页面(即Electron)的形式显示python生成的结果
  • 据我所知

  • Electron感觉更可用、更高效,并且提供的UI组件不像tkinter等那样难看。因此选择坚持使用Electron
  • 从过去几天的谷歌搜索中,我知道node.js有一些模块可以处理文本,但实际上它没有python那么高效。此外,由于我对python比较熟悉,而且我计划使用自然语言处理,所以我希望继续使用python
  • 使用Django更多的是我个人的偏好,因为我以前使用过它,所以不用担心一件事(考虑到Electron有一些学习曲线)
  • 我拥有的知识(尽管有限)

  • 他们也做了类似的事情,但没有具体细节。从这一点上,我只知道这是可以做到的。只是四处转悠,想找到“如何”的答案
  • 在Electron中运行Haskell服务器。因此,我尝试通过以下实现来适应django,但再次出现错误连接被拒绝,这很可能是因为服务器无法运行

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

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

    `app.on('window-all-closed', function () {
      if (process.platform !== 'darwin') {
        app.quit()
        backendServer.kill()
      }
    })`
    
    所有这些似乎都不起作用,因为我仍然可以看到python的一个实例正在运行,并且url
    127.0.0.1:8000仍然可以从web浏览器访问。记住这些,我有以下问题

  • 如何在应用程序关闭后停止Django服务器
  • 目前,为了生孩子,我使用绝对路径,这是非常错误的。如何将其转换为相对路径并使用安装在虚拟环境文件夹(windows中的venv/Scripts/python)中的python实例运行服务器
  • 在我的代码中,添加SIGNIT效果良好

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

    我很想测试它,但项目需要这不是我现在正在积极工作。但这是为了提醒大家。如果我让它工作起来,我会把它标记为答案:)