Testeos en desarrollo del sistema de capturas. Pequeños retoques.

This commit is contained in:
pablomartincalvo 2018-10-13 02:08:58 +02:00
parent e97bbba274
commit 6a0baf4de6
7 changed files with 257 additions and 177 deletions

7
db_layer/Dockerfile Normal file
View file

@ -0,0 +1,7 @@
FROM mysql:5.7.23
ENV MYSQL_ROOT_PASSWORD="noesfacilvivirsindrogon"
RUN "mysql -u root --password="noesfacilvivirsindrogon"
EXPOSE 3306

View file

@ -0,0 +1,27 @@
from core.mysql_wrapper import get_anunciosdb
class CapturasInterface():
def __init__(self):
self.anunciosdb = get_anunciosdb()
def insert_captura(self, ad_data):
columns = ', '.join(ad_data.keys())
placeholders_string = ', '.join('%s' * len(ad_data))
query_statement = """ INSERT INTO capturas
(%s)
VALUES(%s)""".format(columns, placeholders_string)
query_parameters = ad_data.values()
self.anunciosdb.query(query_statement, query_parameters)
capturas_interface = CapturasInterface()

View file

@ -0,0 +1,74 @@
from core.mysql_wrapper import get_tasksdb
class CapturingTasksInterface:
def __init__(self):
self.tasksdb = get_tasksdb()
def create_capturing_task(self, referencia, uuid_exploring=None):
ads_root = 'https://www.idealista.com/inmueble/'
query_parameters = {'ad_url': ads_root + referencia,
'uuid': str(uuid.uuid4()),
'status': 'Pending'}
if uuid_exploring is None:
query_statement = """INSERT INTO capturing_tasks_logs
(uuid, write_time, status, ad_url)
VALUES (%(uuid)s, NOW(), %(status)s, %(ad_url)s)"""
else:
query_parameters['uuid_exploring'] = uuid_exploring
query_statement = """INSERT INTO capturing_tasks_logs
(uuid, write_time, status, ad_url, fk_uuid_exploring)
VALUES (%(uuid)s, NOW(), %(status)s, %(ad_url)s, %(uuid_exploring)s)"""
self.tasksdb.query(query_statement, query_parameters)
def get_pending_task(self):
query_statement = """SELECT logs.*
FROM capturing_tasks_logs as logs
INNER JOIN capturing_last as last
ON logs.uuid = last.uuid
WHERE last.status = 'Pending'
ORDER BY logs.write_time ASC
LIMIT 1
"""
cursor = self.tasksdb.query(query_statement, dictionary=True)
if cursor.rowcount:
return cursor.fetchone()
else:
return None
def update_capturing_task(self, uuid, uuid_exploring, status, ad_url):
query_parameters = {'ad_url': ad_url,
'uuid': uuid,
'status': status}
if uuid_exploring is None:
query_statement = """INSERT INTO capturing_tasks_logs
(uuid, write_time, status, ad_url)
VALUES (%(uuid)s, NOW(), %(status)s, %(ad_url)s)"""
else:
query_parameters['uuid_exploring'] = uuid_exploring
query_statement = """INSERT INTO capturing_tasks_logs
(uuid, write_time, status, ad_url, fk_uuid_exploring)
VALUES (%(uuid)s, NOW(), %(status)s, %(ad_url)s, %(uuid_exploring)s)"""
self.tasksdb.query(query_statement, query_parameters)
def seconds_since_last_try(self):
query_statement = """SELECT TIME_TO_SEC(TIME_DIFF(now(), write_time))
FROM capturing_task_logs
WHERE status = 'Pending'
ORDER BY write_time
LIMIT 1
"""
cursor = self.taskdb.query(query_statement)
return cursor.fetchone()[0]
capturing_interface = CapturingTasksInterface()