イベント駆動型のチャットボットを持っていて、スパム対策を実装しようとしています。アプリケーションの残りの部分をブロックすることなく、悪い行動をしているユーザーを一定期間沈黙させたいです。
機能しないものは次のとおりです。
if user_behaving_badly():
ban( user )
time.sleep( penalty_duration ) # Bad! Blocks the entire application!
unban( user )
理想的には、user_behaving_badly() が true の場合、ユーザーを禁止するだけの新しいスレッドを開始し、しばらくスリープしてユーザーの禁止を解除すると、スレッドが消えます。
これによると、次を使用して目標を達成できます。
if user_behaving_badly():
thread.start_new_thread( banSleepUnban, ( user, penalty ) )
「単純」は通常「良い」の指標であり、これは非常に単純ですが、スレッドについて私が聞いたすべてのことは、スレッドが予期しない方法であなたを噛む可能性があると言っていました. 私の質問は次のとおりです。アプリケーションの残りの部分をブロックせずに単純な遅延ループを実行するには、これよりも良い方法はありますか?