Refactorizado Explorer para que el Explorer, y no el exploring_task, se encargue de postear las tareas de captura.
Creado una funcion independiente de creacion de capturas para que sea compartida entre todos aquellos servicios que las creen.
This commit is contained in:
parent
b77a4752b8
commit
1f372b85b6
4 changed files with 286 additions and 94 deletions
|
|
@ -10,6 +10,7 @@ from random import randint
|
|||
from core.mysql_wrapper import get_anunciosdb, get_tasksdb
|
||||
from core.scrapping_utils import UrlAttack
|
||||
from core.alerts import alert_master
|
||||
from capturer.capturer import create_capturing_task
|
||||
|
||||
class Explorer():
|
||||
|
||||
|
|
@ -48,7 +49,14 @@ class Explorer():
|
|||
|
||||
current_task = ExploringTask(self.compose_listing_url)
|
||||
current_task.explore()
|
||||
|
||||
|
||||
if current_task.status == 'Referencias ready':
|
||||
referencias = current_task.get_referencias()
|
||||
for referencia in referencias:
|
||||
create_capturing_task(referencia, self.tasksdb)
|
||||
|
||||
current_task._update_status(self, "Sent to queue")
|
||||
|
||||
continue
|
||||
|
||||
self.stop()
|
||||
|
|
@ -59,10 +67,12 @@ class Explorer():
|
|||
pass
|
||||
|
||||
def there_is_work(self):
|
||||
#TODO Añadir que no se trabaja si se ha lanzado tarea en los ultimos 10 minutos
|
||||
"""
|
||||
Funcion que agrupa las condiciones que se deben cumplir para poder trabajar
|
||||
"""
|
||||
if self.check_if_recent_task():
|
||||
return False
|
||||
|
||||
if not self.in_working_hours():
|
||||
return False
|
||||
|
||||
|
|
@ -84,19 +94,6 @@ class Explorer():
|
|||
sleep(Explorer.sleep_time_no_service)
|
||||
self.db_retries = self.db_retries + 1
|
||||
|
||||
return False
|
||||
|
||||
def queue_is_up(self):
|
||||
#TODO Comprobar que Redis esta vivo
|
||||
while self.queue_retries <= self.max_queue_retries:
|
||||
try:
|
||||
#codigo que testea si redis esta vivo
|
||||
self.queue_retries = 0
|
||||
return True
|
||||
except:
|
||||
sleep(Explorer.sleep_time_no_service)
|
||||
self.queue_retries = self.queue_retries + 1
|
||||
|
||||
return False
|
||||
|
||||
def in_working_hours(self):
|
||||
|
|
@ -154,6 +151,19 @@ class Explorer():
|
|||
"""
|
||||
return (self.get_max_referencias_for_today() / 30) * 6
|
||||
|
||||
def check_if_recent_task(self):
|
||||
"""
|
||||
Mira si se ha creado alguna tarea recientemente
|
||||
"""
|
||||
query_statement = """ SELECT count(uuid)
|
||||
FROM exploring_tasks_logs
|
||||
WHERE status = 'Attacked'
|
||||
AND write_time >= now() - INTERVAL 10 MINUTE
|
||||
"""
|
||||
cursor_result = self.tasksdb.query(query_statement)
|
||||
|
||||
return cursor_result.row_count
|
||||
|
||||
def compose_listing_url(self):
|
||||
"""
|
||||
Genera URLs de manera aleatoria
|
||||
|
|
@ -169,7 +179,7 @@ class Explorer():
|
|||
return url
|
||||
|
||||
|
||||
class ExploringTask():
|
||||
class ExploringTask:
|
||||
|
||||
def __init__(self, url):
|
||||
self.anunciosdb = get_anunciosdb()
|
||||
|
|
@ -192,8 +202,6 @@ class ExploringTask():
|
|||
self._extract_referencias(attack.get_text())
|
||||
if self.referencias:
|
||||
self._update_status('Referencias ready')
|
||||
self._post_tasks_to_queue()
|
||||
self._update_status('Sent to Queue')
|
||||
elif self.there_are_referencias:
|
||||
self._update_status('Failure - No new referencias in HTML')
|
||||
else:
|
||||
|
|
@ -246,8 +254,7 @@ class ExploringTask():
|
|||
for ad in ads:
|
||||
if self._is_new_listing(ad["data-adid"]):
|
||||
self.referencias.append(ad["data-adid"])
|
||||
|
||||
|
||||
|
||||
def _is_new_listing(self, referencia):
|
||||
"""
|
||||
Comprueba si el listing ya existe en la base de datos de anuncios
|
||||
|
|
@ -263,12 +270,15 @@ class ExploringTask():
|
|||
return False
|
||||
else:
|
||||
return True
|
||||
|
||||
def _post_tasks_to_queue(self):
|
||||
#TODO Mandar las referencias a redis
|
||||
pass
|
||||
|
||||
|
||||
def get_referencias(self):
|
||||
"""
|
||||
Devuelve las referencias, si las hay
|
||||
"""
|
||||
if self.referencias:
|
||||
return self.referencias
|
||||
else:
|
||||
return None
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue