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

2024-06-28 20:38:46 发布

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

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

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

据我所知

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

我的知识(虽然有限)

  1. Rodeo也做了一些类似的事情,但他们没有详细说明。从这一点,我只知道这是可以做到的。只是四处转悠想知道“怎么做”的答案。在
  2. Another article这是关于在Electron中运行Haskell服务器的。因此,我尝试用以下实现来适应django,但我再次收到一个错误连接被拒绝,这很可能是由于服务器无法运行

    function createBackendServer () {
      backendServer=child_process.spawn([path/to/venv/python],['manage.py','runserver'])}
    

在这方面,我的成功有限。我已经能够运行Django服务器,但是我不能终止服务器。为此,我使用了以下代码

^{pr2}$

而且

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

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

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

Tags: django实例服务器webapp应用程序目标venv