169 похожих чатов

==================== На сколько точен Timer.periodic? Если на двух разных серверах запущенны одномоментно

с периодичностью 15сек то со временем не будут совпадать?
====================

32 ответов

48 просмотров

Лучше использовать DateTime.now(), если ты хочешь точное время. И то это будет зависеть от времени на устройстве. timer будет работать относительно загружености системы

HhHhH- Автор вопроса

Нужно чтобы на двух разных серверах что-то выполнялось бесконечно в один и тот же момент с одинаковой периодичностью. Не знаю как реализовать это гарантировано

HhHhH
Нужно чтобы на двух разных серверах что-то выполня...

https://stackoverflow.com/questions/64026825/how-to-get-network-datetime-now

HhHhH
Нужно чтобы на двух разных серверах что-то выполня...

Абсолютно гарантированно – никак. Весь вопрос в том, какая степень точности вас устроит.

HhHhH- Автор вопроса
HhHhH
1сек

Синхронизируете время на каждом из серверов и запускаете

HhHhH
1сек

я не знаю, что у вас за задача, но возможно вы не с той стороны подходите к вопросу. Одновременно и периодически что-то делать на распределенной системе – это звучит как одно из решений какой-то проблемы, но не факт, что самое лучшее.

HhHhH- Автор вопроса
Юрий
Синхронизируете время на каждом из серверов и запу...

Какой-то сервер может задержаться и пропустить момент...похоже с делением и остатками времени надо вычисления следующего момента делать

Kirill Bubochkin
я не знаю, что у вас за задача, но возможно вы не ...

Та не, возможно, делал так, но пришлось перейти на servertimestamp чтоб не зависить от клиентской части - была большая морока с синхронизацией клиентов при проблеме задержки интернета при заявке - ответе и куча костылей

Kirill Bubochkin
я не знаю, что у вас за задача, но возможно вы не ...

В контексте распределенных систем это вобше не решение, это ошибка. @YK1000YK скажите изначальную проблему, очень похоже на типичную XY

HhHhH- Автор вопроса
HhHhH
Какой-то сервер может задержаться и пропустить мом...

Типа был timstamp_start Теперь есть timstamp_now (timstamp_now-timestamp_start )*1000/15сек определяем сколько было раз уже По остатку делаем ожидание Await Future.delay(ост милисек)

HhHhH
Типа был timstamp_start Теперь есть timstamp_now ...

А вычисление периуда когда будет происходить, после выполнения? Как избежать накопления ошибки из за времени выполнения DateTime.now()?

HhHhH- Автор вопроса
Юрий
И в чем проблема?

Ну вот начал проговаривать проблему и сам понял решение Не выговорился то не решился бы вопрос ещё какое-то время

HhHhH- Автор вопроса
Royal Cat
А вычисление периуда когда будет происходить, посл...

Когда выполнился предыдущий раз определяется сколько детей и ставиться на ожидание

HhHhH
Ну вот начал проговаривать проблему и сам понял ре...

Datetime now должно быть только у клиента и пох что у хитрожопого дата на 2 года назад - при заявке от него идет очередной server timestamp для валидации

Т.е. если таска будет выполняться больше чем промежуток то все сломается. Тогда вобше лучше используете periodic там реализация точнее чем эта реализация

HhHhH- Автор вопроса
Royal Cat
Т.е. если таска будет выполняться больше чем проме...

Если выполняться будет дольше чем 15сек а 19 сек то просто пропускаться будут иногда эти точки выполнения. Например через раз выполняться будет иногда

HhHhH- Автор вопроса
Royal Cat
Т.е. если таска будет выполняться больше чем проме...

Вроде по моем исполнении периодичность никогда не собьеться, Тесть абсолютно всегда в ХХ:15 ХХ:30 ХХ:45 ХХ:00 На четвертях секундного циферблата

HhHhH
Если выполняться будет дольше чем 15сек а 19 сек т...

Т.е. точность уже не важна, тогда нормально будет почти что угодно. Вобше рекомендую все таки вернуться к изанчальной проблеме и найти другое решение, т.к. полагатся на синхронизацию времени между разными устройствами рассчитывать не стоит

HhHhH- Автор вопроса
Royal Cat
Т.е. точность уже не важна, тогда нормально будет ...

Точность в тысячных долях секунды уже от ресурсов каждого сервера зависит. Тут никак точнее не сделать

HhHhH
Вроде по моем исполнении периодичность никогда не ...

Прекрасно, крон и фильтр приходящих заявок, только вот проблема - из-за сети человек может и выслал заявку за пол секунды до конца, но она пришла после этого

HhHhH- Автор вопроса
Royal Cat
Т.е. точность уже не важна, тогда нормально будет ...

Они каждый раз datetime now получают и опираясь на это всё точно получиться. Ошибка не накопиться

HhHhH
Они каждый раз datetime now получают и опираясь на...

DateTime.now() - источник накопления ошибки, если его убрать может что то и нормальное будет, но там есть другой подвох который я забыл

HhHhH- Автор вопроса
Юрий
Прекрасно, крон и фильтр приходящих заявок, только...

Если чел отправил заявку в 14,9сек А пришла в 15,1сек То по результатам работы в 15,0 он получит ответ

HhHhH
Какой подвох

Может быть каким угодно

HhHhH- Автор вопроса
HhHhH
Datetime now кто даёт?

Клиентское устройство

HhHhH- Автор вопроса
Юрий
Клиентское устройство

Где источник надёжного текущего времени?

HhHhH
Какой подвох

честно, не помню) в любом случае - если вам надо что то выполнять иногда - в Timer.pereodic решены все проблемы. А выполнять что то одновременно на нескольких серверах - принцпиально не возможно, банально из за задержек сети и еще множества причин

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта