| читать анализ по ничипоренко |
Modify

Ticket #2 (closed enhancement: fixed)

Opened 2 years ago

Last modified 2 years ago

Улучшение производительности для сайтов с большим количеством страниц и ссылок (>5000)

Reported by: lostclus Owned by: lostclus
Priority: major Component: clients
Version: 0.1 Keywords:
Cc:

Description

Существующие методы доступа к данным в клиентах накладывают существенное ограничение на применение LinkExchange? в сайтах с большим количеством ссылок и страниц. При увеличении количества продаваемых ссылок увеличиваться объем данных, которые нужно обрабатывать. Необходимо реализовать эффективные методы доступа к данным, что поступают от удаленных служб.

Attachments

benchmark_test.py Download (2.8 KB) - added by lostclus 2 years ago.
Benchmark test script

Change History

comment:1 Changed 2 years ago by lostclus

  • Owner set to lostclus
  • Status changed from new to accepted

comment:2 follow-up: ↓ 4 Changed 2 years ago by Imbolc

Так же для крупных сайтов актуально вынесение синхронизации с биржами на крон.

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

Changed 2 years ago by lostclus

Benchmark test script

comment:3 Changed 2 years ago by lostclus

Внесены изменения в библиотеку: клиенты теперь для доступа к данным используют драйвера БД (DB drivers), добавлена подсистема БД (есть реализация БД в памяти и реализация использующая shelve), подсистема буферизации теперь не используется.

Судя по результатам attachment:benchmark_test.py Download производительность при работе с сайтами с большим количеством ссылок существенно возросла.

comment:4 in reply to: ↑ 2 Changed 2 years ago by lostclus

Replying to Imbolc:

Так же для крупных сайтов актуально вынесение синхронизации с биржами на крон.

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

Для облегчения этой задачи я добавил метод refresh_db() в базовый класс клиента, а так же добавил метод refresh_db() в класс площадки.

Из крона можно просто выполнять:

>>> platform.refresh_db('http://example.com/')

comment:5 Changed 2 years ago by lostclus

  • Status changed from accepted to closed
  • Resolution set to fixed
View

Add a comment

Modify Ticket

Change Properties
<Author field>
Action
as closed
The resolution will be deleted. Next status will be 'reopened'
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.