Поиск, опубликованный в Biopython: "Невозможно установить соединение, поскольку целевая машина активно отказывала в этом" ошибка 10061

Я пытаюсь получить идентификаторы определенного набора ключевых слов из опубликованного с использованием следующего стандартного кода,

import os
from Bio import Entrez
from Bio import Medline

#Defining keyword file
keywords_file = "D:\keywords.txt"

# Splitting keyword file into a list
keyword_list = []
keyword_list = open(keywords_file).read().split(',')
#print keyword_list

# Creating folders by keywords and creating a text file of the same keyword in each   folder
for item in keyword_list:
    create_file = item +'.txt.'
    path = r"D:\Thesis"+'\\'+item
    #print path
    if not os.path.exists(path): 
        os.makedirs(path)
    #print os.getcwd()
    os.chdir(path)
    f = open(item+'.txt','a')
    f.close()

# Using biopython to fetch ids of the keyword searches
limit = 10

def fetch_ids(keyword,limit):
    for item in keyword:
        print item
        print "Fetching search for "+item+"\n"
        #os.environ['http_proxy'] = '127.0.0.1:13828'
        Entrez.email = 'A.N.Other@example.com'
        search = Entrez.esearch(db='pubmed',retmax=limit,term = '"'+item+'"')
        print term
        result = Entrez.read(search)
        ids = result['IdList']
        #print len(ids)
        return ids

print fetch_ids(keyword_list,limit)

id_res = fetch_ids(keyword_list,limit)
print id_res

def write_ids_in_file(id_res):
    with open(item+'.txt','w') as temp_file:
        temp_file.write('\n'.join(ids))
        temp_file.close()
write_ids_in_file(id_res)

Короче говоря, я пытаюсь создать папки с тем же именем, что и у каждого из ключевых слов, создать текстовый файл в папке, извлечь идентификаторы из опубликованного через код и сохранить идентификаторы в текстовых файлах. Моя программа работала нормально, когда я сначала тестировал ее, однако, после нескольких попыток она начала бросать меня, целевой компьютер активно отказывался от ошибки соединения. Еще некоторые детали, которые могут быть полезны,

информация заголовка

  • Host = 'eutils.ncbi.nlm.nih.gov'
  • Connection = 'close'
  • User-Agent = 'Python-urllib / 2.7'

URL

http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?term=%22inflammasome%22&retmax=10&db=pubmed&tool=biopython&email=A.N.Other%40example.com

host = '127.0.0.1:13828'

Я знаю, что этот вопрос задавался много раз с ответом о том, что порт не прослушивает, но я хочу знать, если это тоже моя проблема, то как заставить приложение работать на этом конкретном порту. Я уже зашел в настройки брандмауэра и открыл порт 13828, но я не уверен, что делать дальше. Если это не так, что потенциально может быть обходным решением?

Спасибо!

1 ответ

Решение

Тебе нужно search.close() после result = Entrez.read(search), Проверьте официальную инструкцию здесь. http://biopython.org/DIST/docs/api/Bio.Entrez-module.html


Завершение работы порта или TCP из-за слишком большого количества открытых соединений - нормальное поведение для общедоступного веб-сайта.

Другие вопросы по тегам