MongoDB Индекс Атласа переопределение веб-обходчиков функция кэширования модуля requests_cache

#python-3.x #mongodb #web-crawler

Вопрос:

У меня есть программа, которая просматривает новостные статьи с различных сайтов и хранит их в собственном экземпляре MongoDB. Программа использует requests_cache модуль для кэширования статей, которые уже были просмотрены, чтобы они не были просмотрены снова.

 import requests import requests_cache   def __init__(self):  # mongodb connection string from system env  MONGODB_URL = os.environ.get('MONGODB_URL', 'localhost')  MONGODB_PORT = int(os.environ.get('MONGODB_PORT', '27017'))  self.client = MongoClient(MONGODB_URL, MONGODB_PORT)    self.db = self.client.DBName  self.collection = self.db.Collection  self.crawler_env = os.environ.get("DBName_CRAWLER_ENV", "dev")    if self.crawler_env == 'dev':  requests_cache.install_cache('web_crawler_cache')  

Программа сохранила кэш в виде web_crawler_cache.sqlite

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

У хоста есть предложения по индексации

Соотношение отсканированных и возвращенных документов в какой-то момент превысило 8000 за последние 24 часа. mongo-shard-00-00.0000.mongodb.net, что обычно предполагает выполнение неиндексированных запросов.

В программе есть функция, которая проверяет URL-адреса в базе данных перед запуском:

 def mongodb_check_exists(self, url):  """  Check if an article is already crawled or not  @param url Text Url of article  @return Boolean True - False  """  try:  return self.collection.find_one({'url': url}) is not None  except Exception as ex:  logging.error("Exception in mongodb_check_exists: {0}".format(url))  traceback.print_exc()  

Я последовал рекомендации Atlas и создал индекс $url 1 , потому что программа работала очень, очень медленно, и я думал, что idex заставит ее работать как обычно. Теперь, когда программа запускается, она как будто даже не проверяет и не просматривает статьи, которые уже хранятся в базе данных. web_crawler_cache.sqlite

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