Telethon更新处理器消息延迟优化:如何实现毫秒级接收?
Telethon消息处理延迟优化问题
我使用Python Telethon开发了一个更新处理器,用于从指定群组列表读取消息,并提取加密货币代码(ticker)发送至加密货币交易所API。程序要求消息在发送至频道后毫秒级被处理器接收,但目前每条消息从送达处理器到完成处理耗时至少20至60秒,无法满足需求。
相关代码
client = TelegramClient('123445.session', '#####', '#####', flood_sleep_threshold=0) @client.on(events.NewMessage(chats=[x[0] for x in idList.items()])) async def my_event_handler(event): nowDate = datetime.now() verified, groupVerified, logBookList, queueList, ticker, dateOfMessage, signalled, endOfSignalled, stopReload, priceVerify, includesImage, nonTrade, notVerified, pumpVerified, tickerNotFound, username, newMessage, includesImageTag, startOfTickerFinder, endOfTickerFinder = 0, 1, [], [], 0, event.message.date, "Message Time: "+str(event.message.date), "Signalled: "+str(datetime.now()), 1, 0, False, 0, 0, 0, 0, event.chat.username, (event.message.message.encode("utf-8")).decode("utf-8"), "", "Ticker Finder not used", "Ticker Finder not used" global previousMessage, accountsList, offSwitch, previousTickers, switchSelector, groupDict, idList if event.photo != None: includesImage, includesImageTag = True, "{INCLUDES IMAGE}" userDict = {'username':str(username), 'switchSelectorNumber':str(groupDict[username][0]), 'sellLimit':float(groupDict[username][1]), 'stopLoss':float(groupDict[username][2]), 'group':str(username), 'logBookNumber':str(groupDict[username][4]), 'timeLimit':float(groupDict[username][5]), 'amountPercentage':float(groupDict[username][6]), 'timeout': float(groupDict[username][10]) } if nowDate.timestamp() - dateOfMessage.timestamp() > 120: #try: startOfTickerFinder = "Start of ticker finder: "+str(datetime.now()) nonTradeTicker = tickerfinder.findticker(newMessage, userDict['username'], previousMessage[userDict['username']], includesImage) endOfTickerFinder = "End of ticker finder: "+str(datetime.now()) #except: #nonTradeTicker = (0,0) timeFrameList = getTradeInfo(str(userDict['username'])) stopList = getStopInfo(str(userDict['username']))
已尝试的优化方案
- 为处理器添加正则表达式过滤器
- 每次处理器迭代后调用
get_input_entity以维持Telethon对频道的关注 - 每次迭代后获取各频道最新消息
上述方案均未改善延迟问题,恳请提供可行的代码优化方案,让更新处理器能以毫秒级速度推送消息。
内容的提问来源于stack exchange,提问作者james townsend
相关产品推荐
相关产品推荐

