Python Goose-extractor создает папку в tmp с именем goose и заполняет ее файлами - PullRequest
0 голосов
/ 24 апреля 2018

Я использую goose-extractor для анализа списка URL-адресов из словарного ключа. Я использую Python 2.7.6 Мой код указан ниже:

import json
import re
import sys
from goose import Goose
from pymongo import MongoClient
mongoobj = MongoClient()
coll = mongoobj.db_name.coll_name
gobj = Goose()
eachkey = sys.argv[1]
print "\n "+eachkey
all_data = []
total_data = len(json_data[eachkey])
count = 0.0
for each_link in json_data[eachkey]:
    print "\r",str(round(count/total_data,2)),
    count += 1
    try:
        data = gobj.extract(each_link)
        new_data =" ".join( re.findall(r"\b\w+\b",data.cleaned_text))
        text = ""
        if new_data:
             text = new_data
        elif data.meta_description:
             text = " ".join(re.findall(r"\b\w+\b", data.title + " " + data.meta_description))
        if text:
            coll.insert_one({"text":text, "label":eachkey, "title":data.title})
    except Exception as e:
        print e

Кажется, что Goose создает в tmp папку с именем goose / он заполняет его файлами tmp и заполняет мое системное пространство. Я не хочу, чтобы это приводило к краху моей системы. Есть ли что-то, что я делаю неправильно, что сборка мусора происходит неправильно.

1 Ответ

0 голосов
/ 15 января 2019

Goose временно хранит данные в локальном хранилище, прежде чем сможет извлечь из него содержимое. Я не знаю ни одного сканера, который может делать это на ходу без использования некоторого объема локального хранилища,

Путь к локальному хранилищу можно настроить из файла configuration.py as self.local_storage_path =.также в этом файле установите self.debug =False, чтобы избежать дальнейшей загрузки.

также после того, как гусь закончил, используйте функцию release_resources(), как предложено в комментариях, она выглядит следующим образом

def relase_resources(self):
        path = os.path.join(self.config.local_storage_path, '%s_*' % self.article.link_hash)
        for fname in glob.glob(path):
            try:
                os.remove(fname)
            except OSError:
                # TODO better log handling
                pass

и очищает временные ресурсы.

Как правило, tmp-файлов даже из нескольких сотен источников среднего уровня должно быть недостаточно для сбоя системы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...