Python定时会议启动脚本重复打开链接3次,如何限制仅执行1次?
问题原因
你使用的%H:%M时间格式只精确到分钟,同一个分钟内循环会多次触发判断条件,执行逻辑后仅sleep 10秒,1分钟内会完成3次条件校验,所以刚好重复打开3次链接。
修复方案
新增一个已处理时间的集合,记录已经执行过的会议时间点,触发过的时间不再重复执行,同时优化原代码中时间匹配的逻辑避免误判,修改后完整代码如下:
import time import pandas as pd from datetime import datetime import webbrowser def sign_in(meetinglink): webbrowser.open(meetinglink) df = pd.read_csv('/Users/3021118/Applications/Meeting-Launcher/timings.csv') # 新增已处理时间集合,记录已经执行过的会议时间 processed_times = set() while True: now = datetime.now().strftime("%H:%M") # 优化时间匹配逻辑,同时校验当前时间是否已经处理过 if now in df['timings'].values and now not in processed_times: row = df.loc[df['timings'] == now] m_link = str(row.iloc[0,1]) sign_in(m_link) # 把当前时间加入已处理集合,避免重复执行 processed_times.add(now) print('MEETING JOINED!') # 把sleep移到逻辑外面,每次循环都间隔1秒,减少CPU占用 time.sleep(1) # 如果需要支持次日相同时间重复执行,可以放开以下逻辑清空集合 # if now == "00:00" and "00:00" in processed_times: # processed_times.clear()
额外说明
如果你的会议安排是每日重复的,可以放开代码最后注释的清空逻辑,每天零点自动清空已处理集合,保证第二天相同时间点的会议可以正常触发。
内容的提问来源于stack exchange,提问作者Farhan Mir
相关产品推荐
相关产品推荐

