2017-02-25 159 views
2

我按照this tutorial構建了一個非常簡單的電報機器人。所以我有一個包含Python代碼的文件,當我運行該代碼時,bot會迴應我說的話。關閉Python時有沒有辦法讓Telegram bot繼續運行?

這是真的,只有當我運行Python並且代碼正在運行時,bot纔會工作嗎?這是否意味着我不能同時在Python中運行任何其他腳本,並且如果我希望我的bot繼續工作,它們都不能關閉Python?

有沒有什麼辦法可以解決這個問題,這樣機器人將永遠是'開'?

+1

'這是真的,機器人只有當我有Python和代碼運行時工作?這是否意味着我不能同時在Python中運行任何其他腳本,並且如果我希望我的bot繼續工作,它們都不能關閉Python嗎? - 這不是事實。 Python進程只是一個解釋器實例。你可以開始和使用盡可能多的,你想要的。即使在關閉shell之後,爲了讓特定進程在後臺運行,請將其設爲守護進程。最簡單的方法(不是最美麗的)是使用'nohup'並將bot的標準輸出傳送到一個文本文件中。 –

+0

此問題與並行編程無關 – Antwane

回答

4

電報bot是一個Python程序。當你運行它時,它會做它應該做的事情,然後,如果你停止了程序,機器人停下來工作。問題是所有程序都很常見的,特別是在服務器上。想想Nginx,Apache,ssh等。Thay都是程序,當他們關閉時,他們都停下來做他們的工作。

如果你想確保你的機器人將永遠運行,你必須守護它。有a lot of solutions

您可以將您的腳本轉換爲守護進程,因此當它啓動時,它會直接進入後臺並繼續運行,直到服務器關閉(或程序崩潰)。但在這種情況下,如果您(或其他人)重新啓動計算機(服務器),您的機器人會重新運行嗎?有一些用於此目的的python庫,如​​。

另一個常見的解決方案是在流程管理器中運行您的機器人。例如,你可以檢查supervisorctl,或者你可以決定創建一個腳本來運行你的程序,從System VUpStartSystemd ...這假設你想部署你的機器人在一個專用的服務器或VPS。

本系列的下一個和最後一部分將[...]上演示瞭如何部署機器人到VPS:這將由tutoriel you followed的第3部分覆蓋。

你也可以考慮封裝你的機器人成圖像或容器(泊塢窗等)上的兼容平臺上運行它。

1

至少在您的計算機上,您不應該在Python中運行兩個控制檯時出現問題。只有當您的計算機上打開Python時,您的代碼才應運行正確。正如Eli正確指出的那樣,如果你想在本地託管,守護進程將是合適的。

然而,如果你想讓它在線連續運行,那將會變得困難。例如,在Reddit上搜索和發佈帖子的評論,你需要通過一些基於雲的服務來託管這些。我建議使用亞馬遜網絡服務,它有免費的試用版,可以滿足基本的Python需求。有些人也會使用Heroku。您幾乎可以保存當前Python窗口的狀態,並且它會不斷運行。

我想查看this文章,瞭解如何在AWS中設置「屏幕」。

+0

@EliKorvigo修復,謝謝指出 – rb612

相關問題