我刚刚开始阅读如何在Python中使用线程,所以我对如何解决问题知之甚少。这是:
我的数据库中有一张表,其中每行都有一个状态'。状态可能会不断变化,当它获得特定值时,我希望启动15分钟的计时器。在那个计时器结束时,我想在日志文件中写一些内容但是如果'状态'松散了那个特定值,我希望能够停止计时器。
# If component is not in room
if data[0][0] != data[1][0]:
# If it is in the corridor
if data[0][0] == data[1][1]:
#end timer <----
#change position
cursor.execute( """UPDATE Reservation
SET localisation = '{}'
WHERE reservationID = {}""".format( data[1][0], reservID ) )
# If it is not in the corridor either
else:
print( "Le matériel a été lu sur un lecteur ne reconnaissant pas sa localisation" )
print( "Vous n'avez pas passé le matériel sur le lecteur de '{}' au couloir".format( data[0][0] ) )
#envoieMail
exit( 6 )
# If it is in the room
else:
#Change position
cursor.execute( """UPDATE Reservation
SET localisation = '{}'
WHERE reservationID = {}""".format( data[1][1], reservID ) )
#start timer <----
我可以开始一个线程。问题是我希望能够找到它并在“#”位置时停止它。更改。 也许这不是做我想做的最好的方式,如果是这样的话,我会很高兴有一些建议!
谢谢。
编辑:我一直在考虑获取线程的处理程序,将其放在db表中(以及状态,在另一列中)并从那里取回它以阻止它。但我在网上看到我们无法杀死线程?但我可以杀死一个进程,所以也许多处理?答案 0 :(得分:0)
对于响应数据库中字段值更改而执行的代码,您可以考虑使用数据库的过程和触发器编码方法设计触发器。但是,此类触发器通常仅限于对数据库本身执行操作,并且在数据库系统之外无法做很多事情。在您的情况下,您可以拥有一个表,其中包含有关挂起日志写入的信息。此表可以包含输入请求时的时间戳和状态字段的副本等字段。
让代码执行只是等待几分钟才能执行某些操作通常不是推荐的方法。您可以考虑使用cron调度程序运行一些代码,每隔1分钟检查一次(这是cron使用的最频繁的间隔)。例如,在您的情况下,您可能会运行一些代码来检查保存挂起的日志写入信息(时间戳字段和状态字段的副本)的表与当前时间(以查看是否已经过去15分钟)以及要确定的状态字段值是否写日志文件。一旦变得无关紧要,此代码也可能会从表中删除该请求。