PythonAnywhere AlwaysOn任务无法识别Telethon会话文件求助
解决PythonAnywhere AlwaysOn任务无法识别Telethon会话文件的问题
常见原因及解决办法
1. 会话文件路径不匹配(最可能的原因)
AlwaysOn任务的默认工作目录和你在Bash里运行脚本的目录大概率不一样,导致脚本找不到name.session。
解决方式:
- 用绝对路径指定会话文件:先在Bash里输入
pwd拿到脚本所在的完整路径(比如/home/your_username/your_script_dir),然后修改代码里的session参数:
async with TelegramClient(session='/home/your_username/your_script_dir/name.session', api_id=api_id, api_hash=api_hash) as client:
- 或者在脚本开头加一段代码,强制切换到脚本自身所在目录:
import os # 切换到脚本所在目录 os.chdir(os.path.dirname(os.path.abspath(__file__)))
2. 会话文件权限问题
虽然你给出的权限是-rw-r--r--(其他用户可读),但还是可以再确认下权限是否足够:
在Bash里执行chmod 644 name.session,确保文件对运行任务的用户可读。
3. 检查会话文件是否完全验证
有时候Bash里能登录,但会话文件可能没走完完整验证流程。再在Bash里跑一次脚本,确认完全没有输入提示,确保会话文件是有效的。
4. 修正AlwaysOn任务的启动命令
检查AlwaysOn任务的启动命令是否正确指定了脚本目录。比如脚本在/home/your_username/scripts/下,启动命令应该写成:
cd /home/your_username/scripts && python3 your_script.py
别直接写python3 your_script.py,不然会在默认目录执行,找不到会话文件。
内容的提问来源于stack exchange,提问作者snub-fighter
相关产品推荐
相关产品推荐

