有没有办法在关闭 Python 时保留 Telegram 机器人 运行?
Is there a way to keep Telegram bot running when closing Python?
我按照 this tutorial 构建了一个非常简单的 Telegram 机器人。所以我有一个包含 Python 代码的文件,当我 运行 该代码时,机器人会回应我说的话。
只有当我打开 Python 并且代码为 运行ning 时,机器人才会工作,这是真的吗?这是否意味着我不能同时 运行 Python 中的任何其他脚本,如果我想让我的机器人继续工作,也不能关闭 Python ?
有什么办法可以解决这个问题,让机器人永远是 'on'?
至少在您的计算机上 运行在 Python 中安装两个控制台应该没有问题。当 Python 在您的计算机上打开时,您的代码应该只 运行,正确。正如 Eli 正确指出的那样,如果您想在本地托管,守护进程将是合适的。
但是,如果您想持续 运行 在线,就会变得困难。例如,对于在 post 上搜索和 post 评论的 Reddit 机器人,您需要通过一些基于云的服务来托管它们。我建议使用 Amazon Web Services,它有免费试用版,足以满足 Python 的基本需求。有些人也会用Heroku。您几乎可以保存当前 Python window 的状态,并且它会不断 运行。
我会查看 this post 以了解如何在 AWS 中设置 "screen"。
Telegram 机器人是一个 Python 程序。当你 运行 它时,它会做它应该做的事情,然后,如果你停止程序,机器人就会停止工作。这个问题对所有程序都很常见,尤其是在服务器上。想想 Nginx、Apache、ssh 等,它们都是程序,它们关闭时都停止工作。
如果您想确保您的机器人 运行 始终如此,您必须对其进行守护进程。有a lot of solutions.
您可以将您的脚本转换为守护程序,这样当您启动它时,它会直接进入后台并继续 运行 直到服务器关闭(或程序崩溃)。但是在那种情况下,如果您(或其他人)重新启动计算机(服务器),您的机器人会重新 运行 吗?有一些 python 库用于此目的,例如 daemonize.
另一个常见的解决方案是 运行 您的机器人在流程管理器中。您可以查看 supervisorctl for example, or you could decide to create a script to run your program from System V, UpStart or Systemd... This suppose you want to deploy your bot on a dedicated server or a VPS. This will be covered by the part 3 of the tutoriel you followed:
The next and final part of this series will [...] be demonstrating how to deploy the Bot to a VPS.
您还可以考虑将您的机器人封装到图像或容器(Docker 等)中,以便 运行 它在兼容平台上运行。
我按照 this tutorial 构建了一个非常简单的 Telegram 机器人。所以我有一个包含 Python 代码的文件,当我 运行 该代码时,机器人会回应我说的话。
只有当我打开 Python 并且代码为 运行ning 时,机器人才会工作,这是真的吗?这是否意味着我不能同时 运行 Python 中的任何其他脚本,如果我想让我的机器人继续工作,也不能关闭 Python ?
有什么办法可以解决这个问题,让机器人永远是 'on'?
至少在您的计算机上 运行在 Python 中安装两个控制台应该没有问题。当 Python 在您的计算机上打开时,您的代码应该只 运行,正确。正如 Eli 正确指出的那样,如果您想在本地托管,守护进程将是合适的。
但是,如果您想持续 运行 在线,就会变得困难。例如,对于在 post 上搜索和 post 评论的 Reddit 机器人,您需要通过一些基于云的服务来托管它们。我建议使用 Amazon Web Services,它有免费试用版,足以满足 Python 的基本需求。有些人也会用Heroku。您几乎可以保存当前 Python window 的状态,并且它会不断 运行。
我会查看 this post 以了解如何在 AWS 中设置 "screen"。
Telegram 机器人是一个 Python 程序。当你 运行 它时,它会做它应该做的事情,然后,如果你停止程序,机器人就会停止工作。这个问题对所有程序都很常见,尤其是在服务器上。想想 Nginx、Apache、ssh 等,它们都是程序,它们关闭时都停止工作。
如果您想确保您的机器人 运行 始终如此,您必须对其进行守护进程。有a lot of solutions.
您可以将您的脚本转换为守护程序,这样当您启动它时,它会直接进入后台并继续 运行 直到服务器关闭(或程序崩溃)。但是在那种情况下,如果您(或其他人)重新启动计算机(服务器),您的机器人会重新 运行 吗?有一些 python 库用于此目的,例如 daemonize.
另一个常见的解决方案是 运行 您的机器人在流程管理器中。您可以查看 supervisorctl for example, or you could decide to create a script to run your program from System V, UpStart or Systemd... This suppose you want to deploy your bot on a dedicated server or a VPS. This will be covered by the part 3 of the tutoriel you followed:
The next and final part of this series will [...] be demonstrating how to deploy the Bot to a VPS.
您还可以考虑将您的机器人封装到图像或容器(Docker 等)中,以便 运行 它在兼容平台上运行。