Sora-reader / backend

https://backend.sora-reader.app
GNU General Public License v3.0
4 stars 4 forks source link

Celery + Scrapy #119

Closed dhvcc closed 2 years ago

dhvcc commented 3 years ago

Для разработки прошу использовать ветку bug/scrapy-celery, там уже есть некоторые код-фиксы


На данный момент функция run_parser не идеальна (а точнее не работает :slightly_smiling_face:)

В общем, есть 2 варианта запуска:

  1. CrawlRunner (требует явного добавления реактора и колбека на завершение)
  2. CrawlProcess тоже использует реактор, но прокидывает эксепшены в сам код (т.е. юзеру 500)

Оба способа запуска будут выдавать ошибку на тему "signal only works in main thread", но первый хотя бы реально запустит и не отдаст юзеру 500

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

Мой ресерч привел меня к двум вещам:

  1. Crochet
  2. Celery (старый код со скрапи можно найти на ветке mangalib-bak)

Видимо, нужно будет юзать селери для запуска и потенциально crochet для работы с реактором (хотя я не уверен в декораторе wait_for). Так же я натыкался на советы использования настройки CELERYD_MAX_TASKS_PER_CHILD (без crochet)

Отсюда такой acceptance criterea - нужно что бы работало. Потенциально использовать преимущества реактора, что бы код исполнялся быстро

image