You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Telethon events.NewMessage()运行数小时后失效问题求助

解决Telethon客户端消息打印卡顿问题

你的代码出现的问题是标准输出缓冲导致的。默认情况下,Python程序在非交互式环境运行时,print函数的输出会被块缓冲,不会实时刷新到控制台。运行数小时后缓冲区累积了大量未输出的内容,按下回车键相当于触发了缓冲区刷新,所以积压的消息一下子都出来了。

解决方法有以下几种:

方法1:给print添加flush参数

修改事件处理函数里的print语句,强制刷新缓冲区:

@client.on(events.NewMessage)
async def my_event_handler(event):
    print(event.raw_text, flush=True)

方法2:修改标准输出的缓冲模式

在程序开头添加代码,将stdout设置为行缓冲:

import sys
sys.stdout.reconfigure(line_buffering=True)

from telethon import TelegramClient, events

client = TelegramClient('zjy', 29155464, '64f8ebfa27060b5c62b585910547e1da')

@client.on(events.NewMessage)
async def my_event_handler(event):
    print(event.raw_text)

client.start()
client.run_until_disconnected()

方法3:使用logging模块替代print

logging模块默认会实时输出,还能添加时间戳等额外信息,更适合长期运行的程序:

import logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(message)s')

from telethon import TelegramClient, events

client = TelegramClient('zjy', 29155464, '64f8ebfa27060b5c62b585910547e1da')

@client.on(events.NewMessage)
async def my_event_handler(event):
    logging.info(event.raw_text)

client.start()
client.run_until_disconnected()

内容的提问来源于stack exchange,提问作者祝靖雲

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 08:15:37