Razmarin, платный ментор - это человек подозрительный. Хороший ментор по определению должен быть хорошим опытным специалистом, а время таких стоит очень дорого. Я бы взялся менторить только из идейных соображений.
sashx, нормальная альтернатива - это сделать боту событийный интерфейс, на который можно подписаться для отслеживания изменений. Чуть более хреновый, но тоже часто применимый - это сделать боты эндпоинт для поллинга изменений.
HelWorld, заказчик на фрилансе не ждёт, что вы на нём учиться будете, он ожидает, что его заказ качественно выполнят. И хоть так может и не казаться в начале карьерного пути, но сделать это можно только понимая нюансы разработки, с которыми сталкиваешься только отработав больше года на реальном коммерческом проекте в команде профессионалов, о которых не рассказывают на курсах и не пишут в учебниках. Поэтому без опыта работа на фрилансе в большинстве случаев начинается и заканчивается по одному и тому же сценарию: неопытный новичок очень долго пытается получиться первый заказ, потом его запарывает, получает негативную оценку и больше не может взять ни одного заказа. Поэтому сначала надо устроиться в офис джуном, отработать там пару-тройку лет. а уж потом соваться на фриланс.
Shandy, P.S. ваша попытка сделать функцию, которая может работать как синхронно, так и асинхронно - это старая академическая проблема разноцветных функций. Если её кратко резюмировать, то не надо так делать.
Shandy, грубо говоря да. В идеале вся программа должна быть написана в асинхронном стиле от и до. Желательно при старте создавать цикл событий, добавлять в него корневую сопрограмму, с которой будет начинаться вся инфраструктурная и прикладная логика, распределённая по асинхронным функциям. В общем-то всё это достаточно подробно описано в документации.
Shandy, просто добавление функции квалификатора async не делает её бысрее, а просто позволяет отдавать управление на операциях ввода/вывода. Чтобы программа стала быстрее, нужно правильно организовать кооперативную многозадачность множества асинхронных функций в одном цикле событий.
PaaS может быть лучше, если уметь под этот platfrom писать код. Для обычного кода, не учитывающего особенности платформы, он часто становится проблемой.
Nikita, курсор стоит открывать перед каждым запросом и закрывать сразу после, он не предназначен для повторного использования. А соединение, если оно не управляется пулом, не должно передаваться за пределы контекста выполнения, оно непотокобезопасно. Проблемы могут быть связаны с этими фактами.