Возможно ли настроить расписание так?

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113
хай.
задача настроить расписание следующим образом.
надо запускать шаблон каждый день с 9 утра до 00.00 за этот промежуток запускать 4 раза, то есть каждые 3 с половиной часа (210мит)

реально?
 

tatarin

Client
Регистрация
28.10.2012
Сообщения
805
Благодарностей
137
Баллы
43
Вот если сделают обещанный планировщик, то все реально, а так думаю тока с гемороем :D
 

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113
видимо придется писать отдельный конфиг, который будет запускать шаблон ...
 

WebBot

Client
Регистрация
04.04.2015
Сообщения
1 763
Благодарностей
1 391
Баллы
113
Можно в самом шаблоне прописать время (с точностью до минут) когда он может работать и установить планировщик ZP на запуск шаблона каждую минуту .. шаб первым кубиком проверяет может ли он в это время работать и если нет сразу же завершается, если да - делает что должен ...

то есть завести переменную good_time и указать там 09:00|14:30|19:30|...
первым кубиком получать текущее время (например 17:45) и искать его в переменной good_time .. если нет => сразу щзавершаем работу шаблона, если есть - делаем что нужно
 

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113
Можно в самом шаблоне прописать
да это да, протсо думал что может уже запилили нормальный планировщик ...

тут логика немного другая, надо записать время начала работы, а потом от него отталкиваться, если прошло N минут, значит запуск. Если прошло больше N2 минут, значит не работаем и тд
но спасибо

будем ваять в общем)
 

ebrwebrw

Client
Регистрация
20.08.2018
Сообщения
221
Благодарностей
164
Баллы
43
C#:
int TimeNow = (int)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;
string FilePath  = project.Directory+@"\unixtime.txt";//путь к файлу
int ActionEveryMinutes = 210;//время ожидания в минутах
int LastActionTime;

try{
    LastActionTime = Convert.ToInt32(File.ReadAllText(FilePath));//считываем дату ласт действия
}catch{LastActionTime=0;}

//if (DateTime.Now.Hour >= 9 && DateTime.Now.Hour <= 23) {
if (DateTime.Now.Hour >= 4) {//если время более или равно 4 часам ночи, поставь тут 9 к примеру

    while(TimeNow < LastActionTime+ActionEveryMinutes*60 ) {
  
        if(((ZennoLab.InterfacesLibrary.ProjectModel.Collections.IContextExt)project.Context).IsInterrupted) return 0; // Прерывание в ZP
        if(Global.Variables.IsProjectMaker && !Global.Variables.IsDebugMode) return 0; // Прерывание в PM
  
        TimeNow = (int)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;//обновляем  текущее время

        int TimeToStart = (LastActionTime+ActionEveryMinutes*60) - TimeNow;
        project.SendInfoToLog("Минут до следующего запуска: "+Convert.ToString(TimeToStart/60));

        System.Threading.Thread.Sleep(10 * 1000);
    }

    File.WriteAllText(FilePath, Convert.ToString(TimeNow));//записываем в фаил дату в UnixTime
    project.SendInfoToLog("Поехали",false);

} else {throw new Exception("Время работы еще не пришло");}
мб такое подойдёт тебе
Возможно криво, поправьте если что ребят меня

PS тут можно еще 1 цикл фигануть для ожидания заданного времени работы, без выхода по красной
 
Последнее редактирование:
  • Спасибо
Реакции: Koqpe

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)