[英]How to run multiple task in Telethon Python
我有关于使用 Telethon 运行多个 function 的问题例如我想同时使用机器人管理命令和跟踪器 function 所以我知道我应该多线程但这是我的脚本我试图同时运行它们但从不同时运行.
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"\n\n <b>🚀 Ad's:</b> '<a href='{luckyNews[0]}'><b>{luckyNews[1]}</b></a>'"
else:
text += f"\n\n <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())
根本不起作用。
您在不使用await
的情况下调用poster
,这是一个async def
。 这意味着它根本不会运行。
您正在使用time.sleep
,它会阻塞整个线程,这意味着asyncio
无法运行其循环,因此创建的任何任务也不会运行。
BOT.get_entity
也是一个async def
定义。 它应该被await
-ed。
检查器看起来像这样:
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
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.