Profilo di Andreap90

Nome Andreap90
Indirizzo email n/a
Messaggi2
  • Re: aiuto su multiprocessing o simile
    Forum >> Principianti
    Grazie per la risposta, conosco il funzionamento dei cicli while ( provengo dal C), e sono a conoscenza del fatto che dai quei cicli non può uscire per nessun motivo, ma in merito ai due cicli interni sono proprio quelli che mi servono, l'if, come da te suggeritomi, mi farebbero solo una volta il "monitor" a me serve che giri sempre, e allora si, sto rifacendo il tutto usando thread separati, ma il dubbio permane, devo utilizzare almeno un while true per far si che una volta richiesto il monitor, lui rimanga attivo fino a diverso comando, che può essere start o help.
    nello specifico ho creato un thread che esegue sempre il controllo sul database, ma qualsiasi dato mi faccia restituire devo pur sempre associarlo a una risposta, e supponiamo che dal thread mi faccia ritornare già la risposta, devo pur sempre inviarla al bot ogni intervallo x.
  • aiuto su multiprocessing o simile
    Forum >> Principianti
    Buongiorno, sono nuovo del forum, e della programmazione in generale, ma ancora di più su python. Sto scrivendo il codice per un bot di telegram, ora ho inquadrato il funzionamento, e il bot funziona però in modo errato, perchè, come capirete dal codice, il while true mi impedisce di svolgere qualsiasi altra azione, ora in merito ho letto di multiprocessing di thread, ma non ne riesco a venire a capo, qualcuno disposto a darmi una mano? per contestualizzare incollo il codice.


    #!/usr/bin/env python
    
    import pymysql
    import telepot
    
    def on_chat_message(msg):
    	content_type, chat_type, chat_id = telepot.glance(msg)
    	if content_type == 'text':
    		name = msg["from"]["first_name"]
    		txt = msg['text']
    		if '/start' in txt:
    			bot.sendMessage(chat_id, 'ciao {}, sono il bot di Automation Service!'.format(name))
    		elif 'monitor' in txt:
    			while True:
    				db = pymysql.connect("localhost","root","root","pippo" )
    				cursor = db.cursor()
    				cursor.execute("select count(*) from prova where eta > 18")
    				((data,),) = cursor.fetchall()
    				print("{}".format(data))
    				while data!=0:
    					print(" sono nel secondo while{}".format(data)) #debug
    					bot.sendMessage(chat_id,'allarme')
    					time.sleep(5)
    				while data==0:
    					print("nessun allarme")  #debug 
    					bot.sendMessage(chat_id,'nessun allarme')
    					time.sleep(5)
    		elif '/help' in txt:
    			bot.sendMessage(chat_id, 'Ecco i comandi che capisco:\n - /start\n - /monitor')
    		else:
    			bot.sendMessage(chat_id, 'Mi spiace {}, non capisco\nUsa /help per sapere cosa posso fare!'.format(name))
    
    TOKEN = 'xxxxxxxxxxxxxxxxxxxxxx'
    
    bot = telepot.Bot(TOKEN)
    bot.message_loop(on_chat_message)
    
    
    import time
    while 1:
        time.sleep(10)