2015-05-08 32 views
0

我很抱歉,我無法找到一個適當的標題,讓我解釋一下我的工作:跟蹤項目的陣列定時器

我有一個Python的IRC機器人,我希望能夠以跟蹤用戶在頻道中閒置了多長時間,並允許他們賺取東西(我把它與Skype/Minecraft /我的網站綁在一起),每隔x小時他們在頻道中閒置。

我已經擁有了所有的東西來跟蹤每個用戶,並讓他們通過網站和內容進行驗證,但我不知道如何跟蹤他們閒置的時間。

我有它加入/離開/部分消息捕獲。我怎樣才能在他們加入時設置一個計時器,並保持該計時器的運行,以及所有在該頻道中的用戶的其他時間,以及他們每個小時閒置的時間(並非全部在同一時間)執行某些操作然後重新啓動計時器爲他們?

回答

1

兩種常規方法:

  1. 爲每個用戶創建一個單獨的定時器,當他加入,做一些事情,當定時器觸發,並摧毀它在用戶離開時。

  2. 有一個定時器設置爲每秒(或10秒)觸發,並在所有用戶觸發時遍歷它們已經空閒多久。

更準確的答案需要更深入地瞭解您的架構,恐怕。

+1

爲了補充說明,可操作的Python stdlib構造是'threading.Timer',尤其是考慮到您的IRC系統已經可能是多線程的。例如,'timer = threading.Timer(SECONDS_PER_HOUR,check_all_idle)' – jwilner

+0

讓我再補充一點,當[Twisted](https://twistedmatrix.com/)使用網絡時總是正確的,特別是)與異步事件。 – kirelagin