我有一个事件驱动的聊天机器人,我正在尝试实施垃圾邮件防护.我想让一段时间内表现不佳的用户沉默,而不会阻塞应用程序的其余部分.
这是不起作用的:
if user_behaving_badly():
ban( user )
time.sleep( penalty_duration ) # Bad! Blocks the entire application!
unban( user )
Run Code Online (Sandbox Code Playgroud)
理想情况下,如果user_behaving_badly()为true,我想启动一个新的线程,除了禁止用户之外什么都不做,然后睡一会儿,解开用户,然后线程消失.
根据这个,我可以使用以下内容完成我的目标:
if user_behaving_badly():
thread.start_new_thread( banSleepUnban, ( user, penalty ) )
Run Code Online (Sandbox Code Playgroud)
"简单"通常是"好"的指标,这很简单,但我听到的关于线程的一切都说他们会以意想不到的方式咬你.我的问题是:有没有比这更好的方法来运行一个简单的延迟循环而不阻塞应用程序的其余部分?