Никита Савченко, да зачем ему квантовый компухтер, сейчас он нужному человечку позвонит, в нужное место подскочит, вопросики порешает, худи накинет, полчаса постучит по кнопкам, чтобы цветные логи высекать из терминала и готово, ваши эти RSA не устоят.
Ведь ваши математики - они кто? Они учёные, они знают, как RSA работает. А whoiam_frontend не знает, он-то и делает открытие (с) Альберт Эйнштейнович Стэтхэм
albertalexandrov, причём тут http, если вопрос твой про sleep? Конечно это справедливо для http, так как это сокеты, а сокеты мультиплексируются как раз селекторами.
Я бы добавил, что в ивент-лупе (ака реактор) есть очередь (ещё одна, помимо основной) с приоритетом, где приоритет — время (timestamp), когда нужно выполнить (не ранее чем) нужный колбэк (ака обработчик). Очередь хранится в виде кучи, таким образом, добавление и удаление в кучу происходит за O(logN), а ближайший колбэк, который нужно выполнить — за O(1) (он всегда в голове кучи). Это нужно для того, чтобы каждый цикл ивентлупа проверять за O(1), нужно ли что-то исполнять из "отложенных тасок", ведь если ближайший элемент исполнять ещё рано, то и остальные подавно. Иначе (будь это обычный deque), пришлось бы проверять всю очередь целиком, а это O(N).
С учётом вышесказанного, asyncio.sleep делает очень примитивную вещь — вызывает loop.call_at, который просто ставит колбэк на резолв Future в ту самую очередь на time() + сколько секунд спать
Я не понимаю, зачем тут ответчики расписали про epoll и прочие селекторы, ведь asyncio.sleep вообще никак не взаимодействует с IO и никогда не затрагивает селектор, просто перекладываются колбэки из кучи (очереди с приоритетом) в обычную очередь
У меня был в 2004 году siemens c35 и там точно стоял Ni-MH аккум
И даже есть тред 2003 года про то, что телефон плохо дружит с литием, что не говорит о том, что он в целом не будет работать на Li-ion, но подтверждает, что лития там с завода не было (либо был не во всех) https://forum.ixbt.com/topic.cgi?id=16:25561
Александр, что тебе доказывать? возьми исходники asyncio да почитай. заодно может и поймёшь, как он работает. нужно иметь неслыханную дерзость, чтобы оправдывать своё невежество манерой письма собеседника.
В чём вопрос-то? Откуда левому человеку (например мне) знать, что у тебя за бизнес-требования. В таблицах нет связей, то есть, валидировать "на глаз" тут особо нечего. Какие-то данные, ок. Какие-то хэши. Зачем? Но ок. Мы же не знаем, что у тебя за приложение.
Вопрос больше в том, где он должен быть общий. На все треды внутри процесса, на все процессы внутри машины, на все машины внутри кластера или на все кластеры?
Чем дальше думать, тем более нерешаемая задача получается. Например, у gunicorn есть опция requests=N, которая перезапускает воркера (тред в случае gthread и процесс в случае sync). Новый воркер — это новый ID или всё ещё прежний? Или, например, k8s, когда перебрасывает контейнер спустя сутки после выкатки (по сути — выключает на одной ноде и спинапит на другой) — это всё ещё старый ID или уже новый? А если не перебрасывает, а просто рестартует, потому что сеть лаганула и хэлсчеки пропали?
Хотя нет, вопрос скорее в том, зачем изначально это понадобилось, возможно всё намного проще, а вопрос — всего лишь задача XY и, например, можно задачу решить просто тем, что при билде образа, класть файл .releaseid внутрь с short sha коммита (что конечно далеко не ID запуска [хотя что вообще такое этот ID запуска? может быть, revision в терминах helm?], но, возможно, именно хэш состояния кодовой базы подойдёт лучше [например для sentry release])
Slava Rozhnev, нет, я ничего не путаю. foreign key - это и есть ограничение, которое не позволяет: 1) создать кортеж, в котором есть ссылка на несуществующий кортеж 2) удалить кортеж, пока на него ссылается кто-то ещё
hrnsywtfczlh, программисты ошибаются все и часто. Поэтому сами себе пишут ловушки, в которые и попадают. Самый популярный пример - статическая типизация, начиная с самой тупой как в Си, заканчивая сложной и богатой как в Расте, Хаскеле и т.д. Потому что железкам-то вообще по барабану, что у тебя там за float и int, у железок есть нули, единички, регистры, откуда их брать и регистры, в которые их совать.
Надеяться на приложение вообще никогда нельзя. Даже если оно написано на 100% правильно, это не значит, что завтра ты напишешь что-то "там", а оно не отвалится где-то "здесь".
Пойду скажу JetBrains что они неполноценные