簡體   English   中英

從 python 腳本獲取數據時,運行在 Heroku 上的 NodeJS 應用程序失敗

[英]NodeJS application running on Heroku fails when getting data from a python script

我有一個在本地主機上完美運行的 nodeJS 應用程序,這個 NodeJS 應用程序的一部分必須運行一個 python 腳本,該腳本使用 SYS 返回數據。 當我將它上傳到 Heroku 時,它會在運行 python 腳本時失敗。 由於我直接運行節點應用程序而不是 python 應用程序,因此很難直接獲取錯誤消息。 相反,我已將 try 和 except 消息放在任何地方,並打印消息以返回到 python(例如,將其發送到轉換消息部分)並發現它是導致 python 代碼崩潰的文件頂部的 2 個導入。

import sys
import spacy
import nltk

如果我將 try 放在 sys 之后,它似乎不會在 sys.path 上崩潰。 相反,導致問題的是 spacy 和 nltk。

經過一番谷歌搜索后,我發現我必須像使用 Pip 一樣使用 requirements.txt 進行安裝。

所以在requirements.txt我有

spacy
nltk

(我最初嘗試將它與版本號一起使用,但失敗了)

但是,這仍然不能解決問題。 我對如何解決這個問題有點迷茫。 我是否在 requirements.txt 中放了錯誤的東西,或者當首先運行 nodeJS 應用程序而不是 python 文件時,heroku 沒有運行需求?

這是我第一次使用 Heroku,所以如果我做錯了什么很明顯,我深表歉意。

謝謝

編輯包括日志照片:

我的日志照片,它說錯誤 R14 內存配額超出,我假設這是因為 JS 正在等待來自 python 的回復,但永遠不會出現

通過終端啟動時的日志:第 1 部分

第2部分

使您的開發環境與生產環境相匹配(反之亦然)。 確保生產環境 (Heroku) 支持您的版本。

在此處閱讀有關支持哪些 Python 版本的信息:
https://devcenter.heroku.com/articles/python-support#supported-runtimes

然后,您可以通過指定runtime.txt來鎖定該版本:
https://devcenter.heroku.com/articles/python-runtimes

在確保雙方使用相同的 Python 版本后,獲取已安裝庫的副本。

python3 -m pip freeze > requirements.txt

這會將您安裝的所有 Python 庫寫入requirements.txt 我使用了python3但對你來說它可能被稱為pythonpypy3

指定 Python runtime.txt很重要,因為最新的 Python 版本(3.8 及更高版本)不支持ntlk ,請參閱: https : ntlk

最后通過app.json明確指定所需的 Heroku app.json
https://devcenter.heroku.com/articles/app-json-schema

"buildpacks": [
  {
    "url": "https://github.com/heroku/heroku-buildpack-java"
  },
  {
    "url": "https://github.com/heroku/heroku-buildpack-python"
  }
]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM