【问题标题】:Running/Stopping Django Development Server In Electron在 Electron 中运行/停止 Django 开发服务器
【发布时间】:2016-12-05 21:43:38
【问题描述】:

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

  1. 使用 Electron 创建一个桌面应用程序作为前端。
  2. 使用 python 作为后端来完成所有繁重的工作。我所说的繁重工作是指大量的文本处理。
  3. 使用 Django 作为桥梁,以简单网页(即 Electron)的形式显示 python 生成的结果

我知道的,

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

我拥有的知识(尽管有限),

  1. Rodeo 做过类似的事情,但他们没有详细说明。由此,我所知道的就是可以做到。只是四处游荡以获得“如何”的答案。
  2. Another article 谈到在 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 实例正在运行,并且仍然可以从 Web 浏览器访问 URL 127.0.0.1:8000。记住这一切,我有以下问题,

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

【问题讨论】:

    标签: python django server electron


    【解决方案1】:

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

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

    【讨论】:

    • 我很想对其进行测试,但需要这个的项目并不是我现在正在积极开展的工作。但这是为了抬头。如果我让它工作,我会将它标记为答案:)
    猜你喜欢
    • 2015-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-08
    • 1970-01-01
    • 2015-02-23
    • 2013-05-19
    • 2015-03-27
    相关资源
    最近更新 更多