Задать вопрос
  • Как сделать паузу в 1с между асинхронными запросами?

    @Maxwell012 Автор вопроса
    нам конечно уже угадывать, чё ты там понаписал?

    Классика жанра:
    import aiohttp
    import asyncio
    import time
    
    async def get_time_zone(lat, lon):
        url = f""
        async with aiohttp.ClientSession() as session:
            async with session.get(url) as response:
                print(await response.text(), response.status)
    
    
    async def main():
        lat = 37.7749
        lon = -122.4194
    
        start = time.time()
    
        for _ in range(10):
            await get_time_zone(lat, lon)
            await asyncio.sleep(1)
        print("time: ", time.time()-start)
    
    asyncio.run(main())

    ну так не делай тупо gather, а делай один обычный цикл (или очередь), внутри которого запрос к сайту и asyncio.sleep(1) после него

    я же сказал что эта функция находиться в асинхронном боте и можно считать что тоже самое что и asyncio.gather(). Можно конечно создавать дополнительный поток, но я в коде не хотел смешивать асинхронность и синхронность, или же вы имели виду создание асинхронной задачи?
  • Как сделать асинхронность в процессах?

    @Maxwell012 Автор вопроса
    Everything_is_bad, Мне просто важно понимать все варианты решения вопроса чтобы решить его максимально продуктивно. Я все таки решил пока что запускать код вместе с моим ботом но с увеличением обьемов я скорее всего его вынесу в отдельный процесс.
    Спасибо за ваши ответы)
  • Как сделать асинхронность в процессах?

    @Maxwell012 Автор вопроса
    Roman K, я бы хотел сделать 2 процесса и в каждом из процессов нужно запустить асинхронный скрипт
  • Как сделать асинхронность в процессах?

    @Maxwell012 Автор вопроса
    Я понимаю что я могу использовать крон, но это по факту один проект и для удобства я бы хотел запускать их вмести + этому классу нужны другие элементы в этом проекте, не хотелось бы создавать экземпляры которые уже и так есть.
    На счет асинхронности, как я сказал первая задача это бот, мне нужно обеспечить непрерывное выполнение этого бота чтобы люди не ждали, а эта задача будет выполняться приблизительно секунд 10 например, поэтому я бы хотел распаралелить это.
  • Как парсить OnlyFinder?

    @Maxwell012 Автор вопроса
    напиши в телеграм @neponyatnuy
  • Какие есть либы для проверки правописания города?

    @Maxwell012 Автор вопроса
    использую api яндекс геокодер, но я там не могу проверить город на правильное написание(. Мне нужны населенные пункты не только России + мне нужно все переводить в латиницу чтобы в бд хранить
  • Какие есть либы для проверки правописания города?

    @Maxwell012 Автор вопроса
    Сергей Водаков, не знаете случайно где я могу найти словарь населенных пунктов, может есть какой-то сайт с словарями?
  • Какие есть либы для проверки правописания города?

    @Maxwell012 Автор вопроса
    Сергей Водаков, я так и думал, но надежды были на либу. Но вы правы, это не проблема)
  • Как организовать планировщик заданий?

    @Maxwell012 Автор вопроса
    Saboteur, я пока что поставил предположительные границы для себя это 300к задач в день. Я подумал что если раз в минуту не потянет то увеличу до 5 или до 10мин так как это особо не повлияет на работу моего скрипта.
  • Как организовать планировщик заданий?

    @Maxwell012 Автор вопроса
    Saboteur, извиняюсь что долго не отвечал. Хочу тогда подвести итог, лучшим вариантом будет орендовать сервак с процессором на 3> ядер, сделать отдельный класс который будет вызываться каждую минуту с планировщика как отдельный скрипт (имею виду на отдельном ядре) для создания выборки с БД, потом соотвественно создание асинхронной задачи под каждое уведомление и запуск этого всего например через aiogram.gather(*tasks). В случаи падение производительности, просто уменьшать частоту вызова класса в планировщике. Если я правильно все понял, то так приблизительно выглядит план моих действий, верно?
  • Как организовать планировщик заданий?

    @Maxwell012 Автор вопроса
    Saboteur, Просто поймите меня правильно, я всего лишь пытаюсь найти самое производительное решение, чтобы потом не переписывать его много раз. Поэтому я думал например написать какой-то триггер в постгрескл который когда время указанное в колонке равно настольному времени будет вызывать функцию, может так будет лучше чем постоянно запросы слать внешне?
  • Как организовать планировщик заданий?

    @Maxwell012 Автор вопроса
    Saboteur, 1 я просто уточнить хотел. 3 В базе у меня храниться timestamp. Мне вполне нравиться решение которое вы предложили, я приблизительно так и думал что оно будет, просто в силу того что я подобное не делал, а говнокод я не люблю, поэтому я посчитал будет лучше спросить.
    Даже сейчас когда я уже сравнил планировщик с сохранением в бд, я чувствую некую неуверненность, хотя очевидно что в данной ситуации с достаточно длинным отлаживанием планировщик будет работать хуже.
  • Как организовать планировщик заданий?

    @Maxwell012 Автор вопроса
    Saboteur, каждая дата это отдельная строка, просто проверяя каждую секунду например 1м записей это ужасная затрата ресурсов, раз в 5м тоже такое себе, нужно тогда учитывать что дата уже могла на 5м быть пройдена. Я думал может есть чет на подобие вебхуков, то есть когда остался час до даты отправлялся запрос мне в основной скрипт который обрабатывал его и все, то есть чтобы нужная дата сама отправлялась. Тоесть мой скрипт просто ожидает например запрос который прийдет от бд и тогда его исполняет, хотя возможно это так и устроенно что есть просто скрипт в постгрескл который постоянно проверяет дату, но я бы хотел какой-то триггер чтоли. Надеюсь я понятно высказался
  • Как организовать планировщик заданий?

    @Maxwell012 Автор вопроса
    Maxwell012, Если это поможет, то я думаю сохранят в планировщик только одну переменную что является индентификатором на определнную строку в бд и когда ее время исполнение доходит то уже через айди достоется нужная информация с бд и отправляется оповещение клиенту. Я имею виду что я не буду хранить много информации для запуска одной задачи, поэтому миллион задач в планировщике даже если в оперативе это не так уж много, но мне нужно рассчитывать на то что вес задач может привышать обьем оперативной памяти поэтому лучше сохранять их на диск плюс это защитит меня от перезагрузки сервера и т.д.
  • Как организовать планировщик заданий?

    @Maxwell012 Автор вопроса
    извиняюсь за неточную информацию, было тяжело сформулировать. У меня есть бот на python + aiogram, пользователи регистрируюца на определнное событие дата которого может быть хоть через 3 месяца (может и больше, но пока что я взял эту орентировачную длину), так вот мне нужно чтобы когда до назначиной даты оставался день отправить сообщение предупреждающее + когда останиться 3 часа еще одно оповещение. Я просто не сильно вижу смысл помещать в планировщик задачи которые могут быть использованы через 3 месяца. Количество запросов я не могу точно сказать, но я орентируюсь на то что запланнированных задач может быть миллион. Я не совсем понимаю где планировщики хранят задачи, они хранят в оперативной памяти или сохраняют их на диск, просто если они сохраняются на диск то впринципе планировщики идеально подходят потому что мне не нужны задачи в оперативе которые исполняться только через 3 месяца
  • Как создать пул соединений asyncpg?

    @Maxwell012 Автор вопроса
    ваш код не проверял но думаю он рабочий, я уже разобрался с этим вопросом и у меня похожий код как у вас). Мне только не нравиться то что для создания бд нужно как минимум один еще метод вызывать чтобы создать пул, но это не проблема просто моя привередливость
  • Как получить текст сообщения по id?

    @Maxwell012 Автор вопроса
    tur_3d, почему не правильно?
  • Как получить текст сообщения по id?

    @Maxwell012 Автор вопроса
    получается отправленное сообщение я уже не могу снова посмотреть только если я его не запомнил