Как настроить запуск R-скрипта по расписанию?

С помощью скриптов R можно быстро и бесплатно собирать данные из API различных сервисов или рекламных площадок и записывать их в базу данных. Но если вы регулярно пользуетесь скриптами, то есть ли смысл каждый раз запускать их вручную?

настроить запуск скриптов R
Как оценить потерянный доход в Google AdWords с помощью языка R

Я расскажу, как настроить запуск скриптов R с определенным интервалом в операционной системе Windows.

1. Как добавить путь к R-консоли в переменную окружения PATH?

PATH — переменная окружения Unix-подобных операционных систем, DOS, OS/2 и Microsoft Windows, представляющая собой набор директорий, в которых расположены исполняемые файлы. В основном, каждый выполняемый процесс или сеанс пользователя имеет собственную переменную PATH.

Эта инструкция относится к операционным системам Windows 8 и 10, но вы без проблем можете найти подробные руководства и для любой другой версии Windows.
1.1. В строке «Поиск» найдите «Система (Панель управления)» и нажмите на ссылку «Дополнительные параметры системы».

 найдите «Система (Панель управления)»

1.2. В окне свойств системы нажмите на кнопку «Переменные среды…».

нажмите на кнопку «Переменные среды...»

1.3. В разделе «Переменные среды» кликните на переменную PATH и нажмите «Изменить». Если переменной PATH не существует, нажмите «Создать».

В разделе «Переменные среды»

1.4. Добавьте в переменную путь к папке с файлом «R.exe».

Добавьте в переменную путь к папке

2. Создайте bat-файл

Bat-файл, по сути, похож на файл с расширением exe, но его код более простой и состоит из некоторых командных строк.

Создать bat-файл довольно просто. Можно записать команду запуска в обычный текстовый файл с расширением TXT, сохранить его и поменять расширение на «.bat». Я опишу другой способ — создание bat-файла с помощью бесплатного блокнота Notepad++.

2.1. Откройте Notepad++ (скачать его можете по ссылке).

2.2. Введите следующую команду:

@echo off
R CMD BATCH C:\R\myscript.R

Команда «@echo off» отключает вывод сообщений в командной строке при работе скрипта, вы можете изменить эту команду на «@echo on» и наблюдать за выполнением скрипта в ходе его работы.

Команда «R CMD BATCH» запускает выполнение R скрипта.

Во второй строке вместо «C:\R\myscript.R» пропишите путь к вашему файлу со скриптом R.

В результате файл будет выглядеть так:

Создайте bat-файл

2.3. Сохраните созданный текстовый файл с расширением BAT. Для этого в меню Notepad++ выберите пункт «Файл» — «Сохранить как» — «Batch file (bat, cmd, nt)».

созданный текстовый файл с расширением BAT

3. Настройте запуск R-скрипта в фоновом режиме

Если вы не хотите, чтобы при автозапуске R-скрипта на экране появлялось окно командной строки, то скомпилируйте ваш bat-файла в exe — в таком случае скрипт будет работать в фоновом режиме и не будет вам мешать.

3.1. Скачайте бесплатную утилиту «Bat To Exe Converter» по ссылке.

3.2. Укажите bat-файл, который необходимо скомпилировать, а также путь и название будущего exe-файла.

Настройте запуск R-скрипта в фоновом режиме

3.3. В области «Видимость приложения» установите переключатель в положение «Невидимое приложение».

В положение «Невидимое приложение»

3.4. При желании установите иконку для вашего файла.

Чтобы установить иконку, перейдите на вкладку «Информация о версии» и с помощью кнопки «…» выберите нужную иконку в поле «Файл значка».

В качестве иконки можете использовать любое изображение в формате ICO или же нарисовать самостоятельно в бесплатном онлайн-редакторе.
Установите иконку для вашего файла

Нажмите кнопку «Компилировать».

4. Настройте планировщик задач Windows

Заключительный этап настройки — добавить задачу в планировщик задач Windows.

Планировщик задач Windows — встроенная утилита (аналог линуксового CRON), с помощью которой можно запланировать в определенное время с заданными условиями:

  • запуск любой программы;
  • отправку электронной почты;
  • вывод на экран определенного сообщения.

4.1. Чтобы открыть планировщик задач, скопируйте в адресную строку открытой папки путь «%windir%\system32\taskschd.msc /s».

открыть планировщик задач

4.2. В правой части планировщика выберите пункт «Создать задачу…».

выберите пункт «Создать задачу...»

4.3. На вкладке «Общие» в диалоговом окне «Создание задачи» введите название и при необходимости краткое описание.

введите название и краткое описание

4.4. На вкладке «Триггеры» настройте расписание запуска скрипта: нажмите «Создать» и установите, к примеру, повтор запуска скрипта каждый понедельник в 12:45.

настройте расписание запуска скрипта

4.6. Далее перейдите на вкладку «Действие» и нажмите «Создать». В выпадающем списке «Действие» кликните на пункт «Запуск программы» и в области «Программа или сценарий» выберите bat-файл, созданный ранее.

выберите bat-файл, созданный ранее

На этом процесс настройки запуска R скриптов по расписанию закончен. Если вы все сделали правильно, в списке появится новая задача.

в списке появится новая задача

Вывод

С этим руководством настройка автозапуска займет не более десяти минут, и поможет сэкономить время в будущем.

Алгоритм действий:

  1. В переменной окружения PATH пропишите путь к консоли R.
  2. Создайте скрипт R, который будет выполнять нужные действия (например, сохранять результат в файл формата CSV или записывать в базу данных).
  3. Создайте bat-файл, в котором будет прописан путь к скрипту R.
  4. Скомпилируйте ваш bat-файла в exe, чтобы он запускался в фоновом режиме и не отвлекал от работы.
  5. В планировщике задач Windows добавьте повторяющееся задание на запуск bat-файла и установите определенный интервал времени.

Обрабатывать огромные массивы данных, агрегировать и передавать их в любые базы — просто и быстро, если вы правильно организовали свою работу.


Оригинал публикации на блоге Netpeak.

Как настроить запуск R-скрипта по расписанию?: 11 комментариев

Добавьте свой

  1. Спасибо, Алексей.
    Запуск по расписанию получилось.
    Единственное, что пока не смог победить:
    у меня после результат работы скрипта — сохранение таблицы в html файл.
    Делаю через R-studio — все в порядке, делаю непосредственно в R(запускаю тот же файл, путь к которому указал в переменной окружение PATH) — тоже все хорошо.

    Но при запуске через планировщик в конечном html файле не поддерживается кириллица (кракозяблы).
    То же и в файле .Rout .

    Пробовал ставить Sys.setlocale(category = «LC_CTYPE», locale = «Russian») в начало скрипта — не помогло. Или его нужно по другому принципу ставить?
    Или может еще варианты могут быть, подскажите, пожалуйста.

    Нравится

    1. Добрый день, хотел посоветовать вам в начало файла добавить Sys.setlocale, но вы уже без меня с этим разобрались.
      Смотрите какая штука, иногда мне помогал следующий костыль победить такие вещи.

      Мы создаём специальный запускной R файл сначала, примерно следующего вида.

      #Set Russian Locale
      Sys.setlocale("LC_CTYPE", "russian")

      #Run R code

      eval(parse("C:/script_folder/Script_Name.R", encoding = "1251"))

      При этом сам ваш R файл с основным скриптом должен быть в кодировке CP-1251, если вы eval в аргументе encoding укажите UTF-8, то и ваш R файл основной тоже должен быть в UTF-8.

      Далее из планировщика вы должны запусктаь именно этот, промежуточный R файл с функцией eval, и тогда по идее всё верно отработает.

      Частично этот приём я нашел в этой статье — https://www.r-bloggers.com/r-and-foreign-characters/

      Нравится

      1. Алексей, нужно в комментарии прикрутить танцующие смайлики))

        Все получилось!

        Очень спасибо!

        Нравится

  2. Добрый день!

    пытаюсь скачать файл с сайта. в RStudio работает, файл скачивается без проблем
    код в RStudio

    setwd(«C:/Users/ALEX/Downloads/»)
    url<- «https://github.com/CSSEGISandData/COVID-19/blob/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv»
    download.file(url = url, destfile = «tcovid19_confirmed.csv» )

    сохранил код как covid.R

    дальше делаю батник прописав в нем путь на файл covid.R, и ничего не происходит

    подскажите, что делаю не так?

    Нравится

      1. аааааа вот в чём проблема была, ну отлично, главное разобрались, при чём без моей помощи.

        Нравится

    1. Добрый день, а появляется ли у вас файл covid.Rout ?

      Скорее всего проблема в том, что у R не хватает прав записывать что либо на ваш диск C, просто попробуйте запустить батник под администратором, правой кнопкой мышки и в меню найдёте ( http://img.netpeak.ua/alsey/158947086700_kiss_64kb.png ).

      Нравится

      1. Здравствуйте! Да, появляется. я правда пока не понимаю для чего он. буквально пару дней с R. Хочу для себе понять, будет ли быстрее работать с консолидацией файлов (excel) R или все таки на Power Query останусь. Хотя, может что толковое получится R + Power BI для обработки.

        Нравится

      2. В файле с расширением Rout у вас записал лог последнего выполнения скрипта.

        Т.е. вы можете его отарыть, промотать в самый низ и посмотреть на чём выполнения скрипта сбивается, и какая именно ошибка.

        Нравится

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google photo

Для комментария используется ваша учётная запись Google. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Блог на WordPress.com. Тема: Baskerville 2, автор: Anders Noren.

Вверх ↑

%d такие блоггеры, как: