WorkerLost 错误:工作人员过早退出:信号 11 (SIGSEGV)

问题描述 投票:0回答:2

我试图在这里找到答案,但没有得到我想要的答案。 所以我发布了这个问题。

import nltk
from nltk.corpus import stopwords
from sklearn.decomposition import TruncatedSVD
from sklearn.feature_extraction.text import TfidfVectorizer

stopset = set(stopwords.words('english'))
vectorizer = TfidfVectorizer(stop_words=stopset, use_idf=True, ngram_range=[1, 4])
X = vectorizer.fit_transform(document_list)
lsa = TruncatedSVD(n_components=2, n_iter=10)
lsa.fit(X)


results = []
terms = vectorizer.get_feature_names()

出于某种原因,我正在运行上面的代码。 当我直接在 python 中运行上面的代码时,效果很好,并且可以获得准确的结果。 但是当我在 celery 中运行上面的代码时(我将 celery 与 Flask 一起使用),我收到以下错误。 任何建议对我都有帮助。

python celery nltk
2个回答
0
投票

我遇到了同样的问题,我通过将这些库的所有导入放在任务函数中而不是放在文件顶部来解决它。

@celery.task
def reduce_features(cik):
     from sklearn.decomposition import PCA
     # your code

0
投票

我也有类似的问题。但是,错误 SIGSEGV 过去仅在每个工作线程、每个任务中发生一次。所以如果我有 3 项任务,以及 2 名工人(绿色和蓝色)。绿色上的两个任务中的每个第一个任务运行都会失败,蓝色上也是如此。 我试过:

  • 无需为
    WorkerLostError
  • 创建重试处理程序
  • 导入内部函数没有帮助

什么有效:

  • 使用选项
    -p
    文档链接
  • 启动 Celery Worker 时
  • 我推荐使用
    gevent
© www.soinside.com 2019 - 2024. All rights reserved.