Python 如何在telethon中进行异步
我有10个帐户(会话)。我希望这十个帐户持续运行并从数据库接收信息 他们从数据库接收用户名并向该用户名发送消息 我曾经使用线程,但它在CPU方面非常昂贵,另一个(最重要的)原因是速度慢 我做了一些研究,意识到我应该使用asyncio。我写了这段代码:Python 如何在telethon中进行异步,python,python-asyncio,telethon,Python,Python Asyncio,Telethon,我有10个帐户(会话)。我希望这十个帐户持续运行并从数据库接收信息 他们从数据库接收用户名并向该用户名发送消息 我曾经使用线程,但它在CPU方面非常昂贵,另一个(最重要的)原因是速度慢 我做了一些研究,意识到我应该使用asyncio。我写了这段代码: db = mysql.connector.connect( host="localhost", user="user", passwd="pass",database = "da
db = mysql.connector.connect( host="localhost", user="user", passwd="pass",database = "database")
cursor = db.cursor()
query = "SELECT session FROM accounts WHERE 1"
cursor.execute(query)
result = cursor.fetchall()
loop = asyncio.get_event_loop()
online_clients = []
async def online_account(session):
global db , cursor , online_clients
try:
apiid = 12345
apihahs = "fdxdddfsdfsd"
client = TelegramClient(str(session),int(apiid),apihahs)
await client.connect()
print("connected")
except:
print("a")
else:
if await client.is_user_authorized():
print("it's ok")
online_clients.append(
client
)
while True:
db.commit()
cursor.execute("SELECT `username` FROM `usernames` WHERE `name`='True';")
res = cursor.fetchone()
await client(SendMessageRequest(res[0],"hi"))
await asyncio.sleep(1)
else: print("auth")
for session in result:
loop.create_task(
online_account(session[0])
)
loop.run_forever()
它有效。。。!但我不确定我的工作是否正确。这就是我想要的还是有更好的方法
我只想要高速度和低消耗
请帮帮我