如何解决PythonAnywhere上Always-on任务持续运行的问题?
解决PythonAnywhere Always-on任务中Telethon脚本启动失败的问题
问题核心
你的Telethon脚本在PythonAnywhere的Always-on任务中启动失败,日志提示Please enter your phone (or bot token): Unexpected error: EOF when reading a line,原因是:
- Telethon首次启动需要交互式输入手机号/验证码生成会话文件(
session_name.session) - Always-on任务运行在无交互环境中,无法响应输入请求,导致脚本因EOF错误终止
- 文件页面或bash控制台是交互式环境,所以能正常完成验证并运行脚本
解决方案
1. 预先生成会话文件
在PythonAnywhere的交互式环境中运行一次脚本,完成验证流程:
- 打开bash控制台,执行完整的脚本启动命令(比如
python3.10 /home/你的用户名/你的脚本文件名.py) - 按照提示输入手机号、验证码,完成后脚本会在同目录下生成
session_name.session文件 - 确认脚本能正常运行后,按
Ctrl+C终止
2. 修正Always-on任务的启动命令
之前的命令路径不完整,必须指定到具体脚本文件:
python3.10 -u /home/你的用户名/你的脚本文件名.py
-u参数:强制脚本输出实时刷新到日志,方便排查问题- 替换
/home/你的用户名/你的脚本文件名.py为你实际的脚本路径
3. 验证任务运行
保存Always-on任务设置后,等待任务启动:
- 查看任务日志,如果显示
Listening for messages...,说明脚本已成功加载会话文件,无需再次输入 - 若仍有错误,检查会话文件是否和脚本在同一目录,以及API信息、群组配置是否正确
脚本注意事项
你的现有脚本逻辑没问题,但需确认以下配置项已正确填写:
api_id和api_hash:替换为你的Telegram开发者账号信息specific_user、source_group、destination_group:替换为实际的用户名/群组IDkeywords:清理空字符串(比如''),避免无意义的匹配
内容的提问来源于stack exchange,提问作者coopec2
相关产品推荐
相关产品推荐

