所以我构建了一个带有烧瓶前端的数据和NLP应用程序,它在本地完美运行但是当我尝试在Apache服务器后面的AWS(Ubuntu linux)上设置这个问题时我们被建议(烧瓶不是为部署而设计的)。使用此设置突然导入python模块成为一个挑战,Stackoverflow上有很多关于它的问题。已经解决了其中的大约5个问题,每次在整个代码中使用大量的Python日志语句来查看各个脚本在什么时候崩溃或挂起(没有错误消息)然后它比以前更进一步和这个问题关于NLTK语料库的位置出现了。不是NLTK模块,导入正常,只是语料库文件夹。
所以要做到这一点通常只需要以下代码:
import nltk
nltk.download()
打开了一种用户界面,您可以在其中选择要下载的语料库或NLP项目以及是否更改目录以将其存储在其他位置。默认情况下,它会在您的主目录中创建目录nltk_data/
并将其放在那里。
所以我首先想到的问题是该文件夹需要Apache用户www-data
的权限,但这不起作用。然后在Apache错误日志中注意到它已查找4个文件夹而没有找到任何内容 - 其中一个是/var/www/nltk_data
,并且它们都不是实际所在的主目录。不记得其他3 ..
我在Stackoverflow上查看了几个类似的问题(1,2,3,4),但我决定采用更简单的方法。以下是:
sudo mkdir /var/www/nltk_data
sudo cp -r nltk_data/ /var/www/
然后我再次刷新Apache日志,重新启动服务器并开始检查日志。它以通常的速度运行,花了几分钟来完成脚本,重新检查日志,并且新的日志消息不断出现,然后一些关于内存的消息在ssh屏幕上不断重复,日志不再可见。我无法输入任何东西。它让我退出,不让我重新登录。进入AWS控制台,重启两次。停了下来,再次启动它,仍然无法登录。所以在愤怒中,终止了它。很遗憾这样做,但是如果你无法登录它,我觉得没有任何意义。
问题:
现在可能还有另外一个,重新创建实例,也许4MB ram还不足以让我的应用和Apache一起,想知道这些事情的答案或任何其他相关提示,以便我下次必须这样做nltk step ..
答案 0 :(得分:0)
所以我在设置一个新实例后谢天谢地解决了这个问题,以下是:
sudo ln -sT /home/ubuntu/nltk_data /usr/share/nltk_data
很高兴现在一切正常。一直在观察新实例上的top
系统监视器的输出,该输出稍微大于自毁的那个,并注意到它从未使用超过大约40%的内存但是CPU最大化在主脚本运行的很长一段时间内。也许这就是杀死较小实例的原因..
当我最初安装停用词时,它看起来像这样: LookupError:
**********************************************************************
Resource 'corpora/stopwords' not found. Please use the NLTK
Downloader to obtain the resource: >>> nltk.download()
Searched in:
- '/home/ubuntu/nltk_data'
- '/usr/share/nltk_data'
- '/usr/local/share/nltk_data'
- '/usr/lib/nltk_data'
- '/usr/local/lib/nltk_data'
**********************************************************************
然而,apache日志显示它主要在除了..之外的相同位置。
] [pid 19:tid 13] [client 77..] Resource 'corpora/stopwords' not found. Please use the NLTK
[Sat Jul 08 16:35:19.694759 2017] [wsgi:error] [pid 19437:tid 1..] [client 77..] Downloader to obtain the resource: >>> nltk.download()
[Sat Jul 08 16:35:19.694762 2017] [wsgi:error] [pid 19437:tid 1..] [client 77..] Searched in:
[Sat Jul 08 16:35:19.694764 2017] [wsgi:error] [pid 19437:tid 1..] [client 77..] - '/var/www/nltk_data'
[Sat Jul 08 16:35:19.694766 2017] [wsgi:error] [pid 19437:tid 1..] [client 77..] - '/usr/share/nltk_data'
[Sat Jul 08 16:35:19.694768 2017] [wsgi:error] [pid 19437:tid 1..] [client 77..] - '/usr/local/share/nltk_data'
[Sat Jul 08 16:35:19.694770 2017] [wsgi:error] [pid 19437:tid 1..] [client 77..] - '/usr/lib/nltk_data'
[Sat Jul 08 16:35:19.694772 2017] [wsgi:error] [pid 19437:tid 1..] [client 77..] - '/usr/local/lib/nltk_data'
所以我认为链接而不是复制更安全,并且使用Apache正在寻找的/usr/share/
目录而不是弄乱自己的目录。