2016-07-31 79 views
2

我開始使用Electron並擁有Python和Django的一些經驗。這是我正在嘗試實現的,在Electron中運行/停止Django開發服務器

  1. 使用Electron創建桌面應用程序,它將充當前端。
  2. 使用python作爲後端來完成所有繁重工作。通過繁重的工作,我的意思是廣泛的文本處理
  3. 使用Django爲橋樑,以顯示由蟒蛇在一個簡單的網頁的形式產生結果(即電子)

我知道什麼,

  1. 電子感覺更實用,高效,並提供不醜陋的用戶界面組件與tkinter等,因此選擇堅持與電子。
  2. 從過去幾天的Google搜索中,我知道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() 
    } 
})` 

這些都不似乎工作,因爲我仍然可以看到蟒蛇正在運行的實例和URL 127.0.0.1:8000仍可訪問從網頁瀏覽器。記住這一切,我有以下問題,

  1. 如何在應用程序關閉後停止Django服務器?
  2. 目前,爲了產生一個孩子,我使用絕對路徑,這是非常錯誤的。如何將它轉換爲相對路徑並使用安裝在虛擬環境文件夾(windows中的venv/Scripts/python)中的python實例運行服務器?

回答

0

在我的代碼添加SIGNIT工作做好

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

我很想來測試它,但是這需要該項目是不是我現在積極很努力。但是,這是爲了擡頭。我會標記爲答案,如果我得到它的工作:) – Paritosh

+0

好吧,歡呼聲 –

相關問題