Python - Queue

 
Vista:
sin imagen de perfil

Queue

Publicado por Sergio (9 intervenciones) el 17/06/2019 02:04:55
Hola.

Estoy trabajando con el módulo queue y lo que quiero es llenar una cola con msj repetivos que se ejecutan en un bucle infinito cada cierto tiempo, eso lo he logrado con éxito. El tema es que deseo que cuando lee una variable desde una bd mysql y esta tome un valor determinado, elimine los msj almacenados en la cola para mostrar un msj específico. Podrían darme una mano???

Ahí agrego el código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#!/usr/bin/python
# -*- coding: iso-8859-15
 
#from lcd import *
import Queue
import threading
from time import sleep
import MySQLdb
 
DB_HOST = 'localhost'
DB_USER = 'root'
DB_PASS = 'mi_pass'
DB_NAME = 'mi_name'
 
def run_query(query=''):
    datos = [DB_HOST, DB_USER, DB_PASS, DB_NAME]
 
    conn = MySQLdb.connect(*datos) # Conectar a la base de datos
    cursor = conn.cursor()         # Crear un cursor
    cursor.execute(query)          # Ejecutar una consulta
 
    if query.upper().startswith('SELECT'):
        data = cursor.fetchall()   # Traer los resultados de un select 
        #data = cursor.fetchone()   # Traer los resultados de una sola fila 
    else:
        conn.commit()              # Hacer efectiva la escritura de datos 
        data = None
 
    cursor.close()                 # Cerrar el cursor 
    conn.close()                   # Cerrar la conexion 
    return data
 
opcion0 = 0
opcion1 = 1
opcion2 = 2
opcion3 = 3
opcion4 = 4
 
# FIFO LCD
mq = Queue.Queue()
 
def periodica():
    mq.put(opcion0)
    mq.put(opcion1)
    sleep(0)
    mq.put(opcion0)
    mq.put(opcion2)
    sleep(0)
    mq.put(opcion0)
    mq.put(opcion3)
    sleep(0)
    mq.put(opcion0)
    mq.put("")
    #print (mq.get())
 
    global per
    per = threading.Timer(10.0, periodica)
    per.start()
 
inicio = 0
while True:
     if inicio == 0:
        periodica()
        inicio = 1
     else:
        query="SELECT * FROM msj WHERE id = '1'"
        uid=run_query(query)
        tipo=uid[0][1]
        fecha=uid[0][2]
        #print tipo
        if tipo == "1":
              per.cancel()
              mq.empty()
              mq.put(opcion0)
              mq.put(opcion4)
              print (mq.get())
              sleep(10)
              query = "UPDATE msj SET tipo = '0', fecha = NOW() WHERE id = '1'"
              uid = run_query(query)
              periodica()
        print (mq.get())
 
     sleep(1)

Gracias!!!!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder