如何在Telethon Python中运行多任务



我有关于使用Telethon运行多个函数的问题例如,我想同时使用bot管理命令和tracker函数,所以我知道我应该多线程,但这是我的脚本,我试图同时运行它们,但从来没有同时运行过。

def Checker():
print('I am Running')
while True:
if isStart:
for i in SpesificDictionary:
Element = SpesificDictionary[i]
poster(Element,i)
time.sleep(10)
async def poster(Element,chatId): 
text = Element.API.getText()   
if text != None:
luckyNews = await randomAds()
if(luckyNews != None):
print(f"Sending to {luckyNews[0]} with {luckyNews[1]}")
text += f"nn <b>🚀 Ad's:</b> '<a href='{luckyNews[0]}'><b>{luckyNews[1]}</b></a>'"
else:
text += f"nn <b>🚀 Ad's:</b> <b>Ads your project📞</b>"

if(len(SpesificButtonAdvertise) != 0):
keyboard = [[Button.url(str(SpesificButtonAdvertise[1]),str(SpesificButtonAdvertise[0]))]]
else:
keyboard = [[Button.url('Advertise your project here 📞', "https://t.me/contractchecker")]]

# chat = BOT.get_entity(-1001639775918)  #-1001639775918 test       # main -1001799563725  # sohbet : -1001648583714
chat = BOT.get_entity(chatId) 
await BOT.send_file(chat, 'giphy.gif', caption= text, buttons= keyboard, parse_mode = 'HTML')
else:
print("Waiting for the next update")

def main():
BOT.start(bot_token=BOT_TOKEN)
loop = asyncio.get_event_loop()
tasks = [loop.create_task(Checker()),
loop.create_task(BOT.run_until_disconnected())]
loop.run_until_complete(asyncio.wait(tasks))
loop.close()

列出的代码有几个问题。

您的def Checker()不是async def。当你调用它时,它会立即运行,而loop.create_task(Checker())根本不起作用。

您正在调用poster,它是一个async def,而不使用await。这意味着它根本不会运行。

您使用的是time.sleep,它会阻塞整个线程,这意味着asyncio无法运行其循环,因此创建的任何任务也不会运行。

CCD_ 9也是CCD_。应为await-版。

检查器看起来像这样:

async def Checker():
print('I am Running')
while True:
if isStart:
for i in SpesificDictionary:
Element = SpesificDictionary[i]
await poster(Element,i)
await asyncio.sleep(10)

别忘了await BOT.get_entity(chatId)


但我强烈建议在尝试编写更复杂的代码之前,先阅读asyncio文档,并对asyncio更加熟悉。

相关内容

  • 没有找到相关文章

最新更新