def run() - асинхронный
def run2() - синхронный, внутри запускает run_forever()
При запуске асинхронного не знаю почему но стопорится и работать перестаёт, остаётся запускать синхронный, для этого есть 3 пути:
1. async/await
2. multiprocessing
3. threading
1. Очень хотелось пойти по первому пути, но никак не могу понять и усвоить работу лупов и проч., вообще можно ли так? Запустить не получилось, пытался через неблокирующий ensure_future, остальное блокировало выполнение, но и через него тупо получал ошибки (не помню какие, при надобности могу выполнить снова и показать их
2. Получал ошибку TypeError: cannot pickle 'coroutine' object, дальше никак
3. При простом виде:
for user in users:
Thread(...).start()
на первой же итерации при первом же старте потока цикл блокировался и дальше не шёл, ожидая завершения потока. Связано ли это с async/await либо я чего-то не понял?
Разумеется, всё это было гуглено, результат не найден. Помогите пожалусто.....
Надо разобраться почему стопорится
тоже что-то связанное с разными лупами, точно не могу сказать ибо там оно разделено на много модулей, а в асинхронке я не очень хорош
Смешивая подходы ты делаешь всё хуже
вот я и хочу разобраться, сам не понимаю..
Что значит «стопорится»? Как это проявляется?
И что это за фреймворк, кстати?
2: Импортируй трейдинг и создай такой метод: def thread(my_func): def wrapper(*args, **kwargs): my_thread = threading.Thread(target=my_func, args=args, kwargs=kwargs) my_thread.start() return wrapper Затем чтобы открыть функцию в новом потоке, просто над ней пишешь @thread Это самый простой способ в твоем случае как мне кажется
Обсуждают сегодня