我正在構建一個電報機器人,並開始使用api包裝器的示例結構。在py腳本中有一個無限循環,它輪詢電報api以獲取bot的新消息。並逐個處理每條新消息。從python腳本啓動並行進程?
while True:
for update in bot.getUpdates(offset=LAST_UPDATE_ID, timeout=10):
chat_id = update.message.chat.id
update_id = update.update_id
if update.message.text:
#do things with the message \ start other functions and so on
我現在預見已經什麼,是有一些消息\請求 - 我將有一個更長的處理時間和其他消息,如果連在同一時間傳來 - 等待。對於用戶來說,它看起來像是在延遲迴答。歸結爲一個簡單的依賴:更多的用戶聊天=更多的延遲。
我在想這個問題:我可以讓這個主腳本bot.py
運行並檢查新消息,並且每次消息到達時 - 此腳本將啓動另一個腳本answer.py
來處理消息和回覆。
並開始儘可能多的並行腳本answer.py
。
我還可以使用bot.py
將所有傳入的內容記錄到數據庫中,併發送有關發送消息的用戶的引用數據,然後讓另一個進程處理所有新記錄的數據並將其標記爲已回答 - 但是也應該處理每個新的條目相互平行。
我不是蟒蛇大師,並正在尋求一些想法和指導如何解決這個問題?謝謝!
謝謝!你的圖書館似乎是一個偉大的工具!我即將創建另一個機器人,爲此我將使用您的圖書館!我已經有了一個 - 我將不得不重構代碼來使用傳送,但是我已經通讀了您的項目,並且發現它非常有用!:)謝謝! 關於線程 - 我確實嘗試在我的主機器上執行線程,但事情不斷崩潰...不知道什麼是錯誤的..我只是切換到傳送:) – GeekSince1982
你必須非常小心使用線程;當兩個線程嘗試更改相同的數據時,事情會變得很糟糕,並且這些類型的錯誤可能很難追蹤(因爲它們可能不會一直髮生)。如果你真的需要同時處理很多請求,我推薦使用異步方式。異步編程與經典編程有點不同,但是值得付出努力。 –
謝謝!我對Python非常陌生,而且這些任務很多,所以我需要更多的閱讀,但是你給了我一個很好的kickstart!:)謝謝! – GeekSince1982