Size: a a a

2021 February 04

МС

Михаил Синегубов... in Scrapy
ну, ты же, в момент выдергивания поставишь статус "в работе"?
источник

П

Пастырь in Scrapy
да, причем сразу
источник

П

Пастырь in Scrapy
и еще вопрос. Мне кажется не совсем правильно каждый раз по закрытии пайпа в цикле лезть в бд и ставить complete, мб как-нибудь bulk_update можно реализовать ?
источник

МС

Михаил Синегубов... in Scrapy
ну, по умолчанию статус 0
делаешь
select url from table where status = 0 limits 1000
источник

МС

Михаил Синегубов... in Scrapy
Пастырь
и еще вопрос. Мне кажется не совсем правильно каждый раз по закрытии пайпа в цикле лезть в бд и ставить complete, мб как-нибудь bulk_update можно реализовать ?
от щас ворчать уже начну
источник

AR

Andrey Rahmatullin in Scrapy
ну формально два селекта друг друга не блокируют и действительно могут вернуть одно и то же
источник

AR

Andrey Rahmatullin in Scrapy
даже если в той же транзакции делать апдейт
источник

П

Пастырь in Scrapy
Вот вот
источник

AR

Andrey Rahmatullin in Scrapy
не ДБА, но прозреваю что вопрос довольно популярный, могут быть готовые решения
источник

AR

Andrey Rahmatullin in Scrapy
(помимо "взять очередь")
источник

МС

Михаил Синегубов... in Scrapy
Andrey Rahmatullin
ну формально два селекта друг друга не блокируют и действительно могут вернуть одно и то же
формально, два селекта разнесены во времени охренеть как. И все транзакции должны уже быть закрыты.
кроме, кончено, чумачечей транзакции длинной во весь парсинг :))
источник

П

Пастырь in Scrapy
ну думаю для отладки меньше 1000 урлов за раз не буду брать
источник

AR

Andrey Rahmatullin in Scrapy
да вон же выше "Допустим в один момент времени выдернется"
источник

МС

Михаил Синегубов... in Scrapy
так, а где сказано что два паука будут одновременно дергать данные?
источник

П

Пастырь in Scrapy
Andrey Rahmatullin
не ДБА, но прозреваю что вопрос довольно популярный, могут быть готовые решения
гугл показал примеры реализации, когда урлы просто выдергиваются из базы. Но со сменой статуса я не нашел
источник

AR

Andrey Rahmatullin in Scrapy
Михаил Синегубов
так, а где сказано что два паука будут одновременно дергать данные?
но ведь правильный вопрос "а где гарантия что не"
источник

AR

Andrey Rahmatullin in Scrapy
но я не читал что вы там выше писали
источник

МС

Михаил Синегубов... in Scrapy
def get_url_from_db():
   records = CatalogModel().select().where(CatalogModel.status == 0).limit(1000)
   items = []
   with db_handle.atomic() as transaction:
       for rec in records:
           items.append({
               'id': rec.id,
               'str_id': rec.str_id,
               'url': rec.url,
           })
           CatalogModel.update({'status': 1}).where(CatalogModel.id == rec.id).execute()
           s = ''
       transaction.commit()
   return items
источник

МС

Михаил Синегубов... in Scrapy
@gray_smm ☝️но это на пиве сделано
источник

П

Пастырь in Scrapy
Спасибо. Я так же примерно в голове держал
источник