Testeos en desarrollo del sistema de capturas. Pequeños retoques.
This commit is contained in:
parent
e97bbba274
commit
6a0baf4de6
7 changed files with 257 additions and 177 deletions
7
db_layer/Dockerfile
Normal file
7
db_layer/Dockerfile
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
FROM mysql:5.7.23
|
||||
|
||||
ENV MYSQL_ROOT_PASSWORD="noesfacilvivirsindrogon"
|
||||
|
||||
RUN "mysql -u root --password="noesfacilvivirsindrogon"
|
||||
|
||||
EXPOSE 3306
|
||||
27
db_layer/capturas_interface.py
Normal file
27
db_layer/capturas_interface.py
Normal 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()
|
||||
|
||||
|
||||
|
||||
74
db_layer/capturing_tasks_interface.py
Normal file
74
db_layer/capturing_tasks_interface.py
Normal 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()
|
||||
Loading…
Add table
Add a link
Reference in a new issue