Уведомление по электронной почте (или аналогичное) о завершении выполнения кода - PullRequest
7 голосов
/ 22 июня 2019

В настоящее время я делаю несколько симуляций в R, выполнение каждого из которых занимает достаточно много времени, и время, необходимое для завершения каждого из них, варьируется от случая к случаю.Чтобы более эффективно использовать промежуточное время, я подумал, можно ли настроить что-либо (например, систему уведомлений по электронной почте или подобное), которое уведомит меня, как только будет завершена часть моделирования.

Есть ли у кого-нибудь здесь опыт установки чего-то подобного или кто-то знает ресурс, который может научить меня внедрять систему уведомлений через R?

Ответы [ 2 ]

5 голосов
/ 23 июня 2019

Я недавно видел пакет R для такого рода вещей: pushoverr .Однако сам не использовал - так что не проверял, как это работает.Но похоже, что это может быть полезно в вашем случае.

1 голос
/ 22 июня 2019

Я полагаю, вы выполняете трудоемкое моделирование на сервере, правильно?Если они работают на вашем собственном ПК, ваш компьютер все равно будет работать медленно, и я не увижу ничего полезного в отправке почты себе.

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

  1. Напишите свой R-скрипт.Важно: Напишите файл .txt, когда файл расчета в конце.Сценарий оболочки будет в цикле искать файл для существования.
  2. Скопируйте этот код и сохраните его как скрипт Python.Однажды я пытался заставить MailR работать под Linux, и он не работал.Этот код работал с первой попытки.
#!/usr/bin/env python3
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders
email_user = 'youownmail@gmail.com'
email_password = 'password'
email_send = 'theothersmail.com'
subject = 'yourreport'
msg = MIMEMultipart()
msg['From'] = email_user
msg['To'] = email_send
msg['Subject'] = subject
body = 'Calculation is done'
msg.attach(MIMEText(body,'plain'))
part = MIMEBase('application','octet-stream')
part.set_payload((attachment).read())
encoders.encode_base64(part)
msg.attach(part)
text = msg.as_string()
server = smtplib.SMTP('smtp.gmail.com',587)
server.starttls()
server.login(email_user,email_password)
server.sendmail(email_user,email_send,text)
server.quit()

Убедитесь, что вам разрешено запускать скрипт.

sudo chmod 777 /path/script.R sudo chmod 777 /path/script.py

Запустите оба script.R и script.py в файле script.sh.Это выглядит следующим образом:

R < /path/script.R --no-save  
while [ ! -f /tmp/finished.txt ]
do
  sleep 2
done
python path/script.py

Это может звучать немного ошеломляюще, если вы не знакомы с этими технологиями, но думаете, что это в значительной степени автоматизированный рабочий процесс, который облегчает ваши собственныересурсы и могут быть использованы "в производстве".(Я использую этот рабочий процесс для отправки мне своих собственных отчетов о запасах).

...