2014-01-23 75 views
2

我正在使用boilerpipe編寫一個燒瓶應用程序來提取內容。最初,我將boilerpipe提取作爲腳本來提取網站內容,但是當我嘗試與我的api集成時JVM崩潰時執行boilerpipe提取器。這是錯誤我得到https://github.com/misja/python-boilerpipe/issues/17 我也曾經在github上JVM在Flask應用中實現Python-Boilerpipe時崩潰

from boilerpipe.extract import Extractor 
import unicodedata 

class ExtractingContent: 

    @classmethod 
    def processingContent(self,sourceUrl,extractorType="DefaultExtractor"): 
    extractor = Extractor(extractor=extractorType, url=sourceUrl) 
    extractedText = extractor.getText() 
    if extractedText: 
     toNormalString = unicodedata.normalize('NFKD',extractedText).encode('ascii','ignore') 
    json_data = json.loads({"content": toNormalString, "url": sourceUrl , "status": "success", "publisher_id": "XXXXX", "content_count": str(len(toNormalString)) }) 
    return json_data 
    else:  
    json_data = json.dumps({"response": {"message": "No data found", "url": sourceUrl , "status": "success", "content_count": "empty" }}) 
    return json.loads(json_data) 

這是上面的腳本我嘗試在使用燒瓶寧靜,sqlachemy,PSQL瓶API整合提出了一個問題。我也更新了我的Java,但沒有解決的issue.Java版本

java version "1.7.0_45" 
javac 1.7.0_45 

任何幫助,將不勝感激

感謝

回答

3

(什麼,我在寫https://github.com/misja/python-boilerpipe/issues/17複印件)

好吧,我已經重現了這個錯誤:調用JVM的線程沒有連接到它,因此對JVM內部的調用失敗。 這個錯誤來自boilerpipe(見下文)。

首先,猴子修補:在你張貼在計算器的代碼,你就必須創建提取的前添加如下代碼:

class ExtractingContent: 
    @classmethod 
    def processingContent(self,sourceUrl,extractorType="DefaultExtractor"): 
     print "State=", jpype.isThreadAttachedToJVM() 

     if not jpype.isThreadAttachedToJVM(): 
      print "Needs to attach..." 
      jpype.attachThreadToJVM() 
      print "Check Attached=", jpype.isThreadAttachedToJVM() 

     extractor = Extractor(extractor=extractorType, url=sourceUrl) 

關於boilerpipe:在boilerpipe/extractor/__init__.py檢查if threading.activeCount() > 1 50行, 是錯的。 調用線程必須始終連接到JVM,即使只有一個。

+0

謝謝托馬斯..它工作知府:) – shiva