Что может вызывать asyncio — ERROR — Exception in callback Task.task_wakeup()?

У меня есть главный телеграмм бот который запускает другие боты в новом процессе.
После запуска второго бота в новый процесс программа уходит в ошибку именно на сервере, на компьютере код работает хорошо:

RuntimeError: Cannot enter into task wait_for=> while another task cb=[gather.._done_callback() at /usr/lib/python3.10/asyncio/tasks.py:720]> is being executed.

from aiogram import Bot, Dispatcher
from aiogram.contrib.fsm_storage.memory import MemoryStorage
from aiogram import executor
from aiogram import types
from bot.add_application import add_application
import os
import logging


logging.basicConfig(level=logging.DEBUG, filename='bot.log',
                    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')

TOKEND = ''
bot1 = Bot(token=TOKEND)
storage = MemoryStorage()
d = Dispatcher(bot1, storage=storage)

add_application.register_handler_app(d)


@d.message_handler(commands=['start'])
async def send_welcome(message: types.Message):
    keyboard = types.InlineKeyboardMarkup()
    button1 = types.InlineKeyboardButton(text="Добавить приложение", callback_data="add")
    button2 = types.InlineKeyboardButton(text="Удалить приложение", callback_data="delet")
    button3 = types.InlineKeyboardButton(text="Сменить канал", callback_data="changec_hannel")
    button4 = types.InlineKeyboardButton(text="Сменить бота", callback_data="change_bot")
    button5 = types.InlineKeyboardButton(text="Запустить бота", callback_data="run")
    button6 = types.InlineKeyboardButton(text="Авторизоваться VK",
                                         url="https://oauth.vk.com/authorize?client_id=51711276&display=page&redirect_uri=https://t.me/distribution_postsBot&scope=wall,video,offline&response_type=token&v=5.52")

    keyboard.add(button1, button2)
    keyboard.add(button3, button4)
    keyboard.add(button5)
    keyboard.add(button6)
    await message.answer("Меню", reply_markup=keyboard)


@d.callback_query_handler(text='run')
async def start_posts(callback: types.CallbackQuery):
    import sqlite3
    conn = sqlite3.connect('bot_users.sql')
    cur = conn.cursor()
    cur.execute(
        'CREATE TABLE IF NOT EXISTS users (id int auto_increment primary key, IDUSER int , TOKEN varchar(46), NAMEBOT varchar(150), IDBOT varchar(50), IDCHANNEL varchar(50), NAMECHANNEL varchar(150), TITLECHANNEL varchar(150), STATUS varchar(10), DOMEN varchar(150))')
    conn.commit()
    cur.execute(f"SELECT * FROM users WHERE IDUSER = {callback.message.chat.id}")
    data = cur.fetchall()
    name_bot = {}
    for bot in data:
        name_bot[bot[3]] = bot[6]

    keyboard = types.InlineKeyboardMarkup()

    for key in name_bot:
        b = types.InlineKeyboardButton(text=f' {key} | Канал: {name_bot[key]}', callback_data=key)
        keyboard.add(b)

    await callback.message.answer("Выберите бота для запуска", reply_markup=keyboard)
    await callback.answer(cache_time=1)
    cur.close()
    conn.close()


@d.callback_query_handler()
async def choosing_bot(callback: types.CallbackQuery):
    import sqlite3
    conn = sqlite3.connect('bot_users.sql')
    cur = conn.cursor()
    cur.execute(
        'CREATE TABLE IF NOT EXISTS users (id int auto_increment primary key, IDUSER int , TOKEN varchar(46), NAMEBOT varchar(150), IDBOT varchar(50), IDCHANNEL varchar(50), NAMECHANNEL varchar(150), TITLECHANNEL varchar(150), STATUS varchar(10), DOMEN varchar(150))')
    conn.commit()
    cur.execute(f"SELECT * FROM users WHERE IDUSER = {callback.message.chat.id}")
    data = cur.fetchall()
    name_bot = {}
    TOKEN = ""
    if not os.path.exists("token_bot.txt"):
        with open(r"token_bot.txt", "w") as file:
            print("Файла с токеном бота не существует, создаём файл!")

    for bot in data:
        name_bot[bot[3]] = bot[2]
    for key in name_bot:
        if key in callback.data:
            TOKEN = name_bot[key]

    with open(f"token_bot.txt", "r+") as file:
        file.write(str(TOKEN) + "\n")
    from bot.start import start_bot


    import multiprocessing as mp
    mp.Process(target=start_bot).start()
 
    await callback.message.answer(f"Запускаем {callback.data}")
    await callback.answer(cache_time=1)

    cur.close()
    conn.close()
 

if __name__ == '__main__':
    executor.start_polling(d, skip_updates=True)


Функция def choosing_bot вызывает в новом процессе функцию def start_bot()

Код в файле

from aiogram import executor
from bot.create_bot import dp
from handlers import get_wall_posts


get_wall_posts.go_posts(dp)



def start_bot():
    print("start_bot")

    executor.start_polling(dp, skip_updates=True)


Помогите разобраться

64d86fd6dd18f538216769.png
  • Вопрос задан
  • 187 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы