Nikolay Markov
хотя обычно там либо песни, либо пляски
Nikolay Markov
кстати, во втором питоне нет вообще никаких гарантий ни для того таймера, ни для другого, что он выполнится вовремя
Nikolay Markov
я имею в виду, ни для тредового, ни для асинхронного
Nikolay Markov
в третьем тредовый будет гарантироваться с гораздо меньшей погрешностью, а асинхронный все так же нет
Nikolay Markov
но в асинхронном заранее коде тредовый таймер не решает
Anonymous
Его что-то точно "будит", бо ситуация не шибко частая.
Anonymous
Я могу заблокировать любые нотифай_алл или нотифай на мой таймер?
Nikolay Markov
ты можешь просто не регистрировать его на кондишен
Anonymous
У меня стартует класс, который там чего-то обрабатывает. В нем я подлючаю класс с Таймером, который просто запускает функцию, которая пишет куда-то там. Дальше раскидую метод со старт таймером где мне нужно. Как бе всё.
Nikolay Markov
один копипаст вместо тысячи слов
Anonymous
И в абсолютно идентичных ситуациях он работает нормально, а потом бац - и вместо положенного интервала, скажем, в 30 сек, он отрабатывает за шесть
Anonymous
И такой случай примерно один из тысячи
Nikolay Markov
там такой херни не будет гарантированно
Anonymous
Таймер нужно по прилетевшему событию. Залетело, обработали, записали, врубили таймер - через 30 секунд сделали дополнительную пометку
Anonymous
Херово, что я его запускал-запускал и так и сяк - ну нормально работает. Воткнул - вроде норм. На утро смотрю логи - парочка отработала раньше времени. Причем никакого явного нотифая нет. Где-то с коробки прилетает, если я правильно понимаю вообще суть его работы
Nikolay Markov
а где Гриндевальд?
tfhx8
Всем привет. Есть uwsgi вебсервер который запускает некий скрипт. Этот скрипт через uwsgi дергается очень часто, около 300запросов в секунду. Внутри этого файла постоянно открывается некий текстовой файл со списком и я так понимаю при каждом запросе этот файл постоянно открывается. Можно ли его как то вынести в память, чтобы он каждый раз не открывался, а всегда был в памяти ? Кто знает как такое сделать?
tfhx8
один раз загрузить и потом объект передавать везде?
да, а то так получается наверно этот файл при каждом запросы каждый раз открывается и на это тратится время
tfhx8
а так вместо открытия, сразу доступ к данным получать, в теории должно быть быстрее
Nikolay Markov
кажется мне, что тебе не файл нужен, а база данных in-memory
Nikolay Markov
типа redis
Nikolay Markov
или sqlite, на худой конец
tfhx8
понял, наврено с редисом быстрее всего должно быть
Tishka17
так если файл не меняется, почему его не прочитать при запуске приложения?
Tishka17
или он меняется?
tfhx8
не меняется, но вызывает его вебсервер
Tishka17
в смысле "вызывает"?
Tishka17
просто читай файл не в реквесте, а при инициализации app
👑OGURCHIK🖤
loop = asyncio.get_event_loop() loop.create_task(main(list,i,loop)) executor.start_polling(dp, loop=loop) почему бот молчит после 2-3 секунд?
tfhx8
в смысле "вызывает"?
выполняет скрипт
Tishka17
выполняет скрипт
uwsgi не выполняет скрипт заново на каждый запрос, если ты специально так н есделла. Он инициализирует воркеры и передает им ревесты
tfhx8
просто читай файл не в реквесте, а при инициализации app
его веб сервер не при каждом запросы инициализирует?
Tishka17
какой файл? я не знаю как ты его читаешь
tfhx8
просто у меня сильно увеличивается количество дискрипторов файла
tfhx8
обычный текстовой
Tishka17
эээ
Tishka17
дескрипторов?
Tishka17
давай-ка издалека
tfhx8
with open(fname) as f: content = f.readlines() content = [x.strip() for x in content]
Tishka17
что за файл, где ты его читаешь, что за фрйемворк
Tishka17
with open(fname) as f: content = f.readlines() content = [x.strip() for x in content]
и где этот код у тебя вызывается?
tfhx8
при обращении к некому адресу
Tishka17
так, файл ты зыкрываешь. Значит на дескрипторы он не должен влиять, они особождаются
tfhx8
открывается файл, где считываются строки
Tishka17
при обращении к некому адресу
а как это соотносится с запросами к твоему серверу?
tfhx8
потом эти строки в цикле перебираются
Tishka17
Попробую ещё раз: 1. Какой веб фреймворк? 2. Ты читаешь этот файл в каждом запросе или при старте приложения? 3. Что там за тема с дескрипторами и почему ты решил что виноват файл?
Über
Хочу сделать генератор машиночитаемого кода Как нагуглить или как сделать так что бы юзер вводил данные,они преобразовывались в текст для машины
tfhx8
1 . Не фреймворк, а чистый питон скрипт. 2. читается в каждом запросе, читать при старте приложения я не вкурсе как сделать .(Это скрипт который передается в uwsgi в конфиг откуда начинать выполнение?) 3. Как убираю этот кусок кода с открытием файла с большим количетсвом строка и цикла, то количество дескрипторов приходят в норму
Tishka17
1. Как ты его прикрутил к uwsgi? 2. Код в студию 3. Как ты мониторишь дескрипторы?
tfhx8
1. в конфиге uwsgi есть такая опция как module = wsgi:application. То есть uwsgi открывает файл wsgi.py в котором такое: 2. def application(env, start_response): obj = myapp.Run() return obj.server(env, start_response) . 3. Дескрипторе смотрел в программе по мониторингу
Tishka17
у, ну вот в этой функции и можешь прочитать файл
Tishka17
"программа по мониторингу" - это что?
Tishka17
сколько было открытых дескрипторов и почему ты решил что это пробелма?
Tishka17
к слову, ОС кэширует файлы в памяти и если ты ег опостоянно читаешь она не будет тебя на диск посылать. Но конечно все равно лучше прочитать один раз
tfhx8
к слову, ОС кэширует файлы в памяти и если ты ег опостоянно читаешь она не будет тебя на диск посылать. Но конечно все равно лучше прочитать один раз
да, но что то открывает количетсво дескрипторов, когда этот кусок кода, я про открытие файла считываение его, а далее в цикле к примеру и 1000 элементов с этого списка берется рандомный эелемент. И вот все это вызывает рост файловых дескрипторов
Tishka17
давай вернемся к вопросам - 3.1 Что за "программа мониторинга"? 3.2 Сколько дескрипторов? 3.3 Почему ты решил что это проблема?
tfhx8
хотя возможно тормоза не связаны с считыванием, а с записью и отдачей. Так как после всех этих действий, динамически в цикле создаются данные и делают такой ответ self.start_response('200 OK', [('Content-Type','text/xml ... return [str.encode(data, 'utf-8')]
Tishka17
ну считываение надо убрать все равно. оно бессмысленно
Tishka17
но понять что тормозит - стоит
Tishka17
может даже рандом тормозить
Tishka17
как ты вообще докатился до того, чтобы руками wsgi реализовывать?
tfhx8
именно увеличиваются request writing и workers fds count
Tishka17
😄 жизнь заставила
даже меня жизнь не заставляла так писать
tfhx8
😂
Tishka17
кто пишет на диск?