首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R代码在一台计算机上运行良好,但在另一台计算机上却不运行(通过RScript.exe中的任务调度程序)

R代码在一台计算机上运行良好,但在另一台计算机上却不运行(通过RScript.exe中的任务调度程序)
EN

Stack Overflow用户
提问于 2022-01-14 19:04:45
回答 1查看 163关注 0票数 0

我的问题是:当我通过任务调度器( Task )从RScript.exe中的一台笔记本上运行以下代码时,我得到了所需的输出;即发送电子邮件。但是,当我通过任务调度程序在RScript.exe中的另一台计算机上运行相同的代码时,它不会运行。另一台机器(机器2)能够发送电子邮件(当只运行电子邮件代码时),所以我认为问题在于下面的部分。

结果<- get_everything(查询= q,页面= 1,page_size = 2,language = "en",sort_by =“普及性”,from = Yest,to =今天)

我找不到这方面的问题。有人能帮我吗?

我的代码是:

代码语言:javascript
复制
library(readxl)
library(float)
library(tibble)
library(string)
library(data.table)
library(gt)
library(tidyquant)
library(condformat)
library(xtable)
library(plyr)
library(dplyr)
library(newsanchor)
library(blastula)

Today <- Sys.Date()
Yest <- Sys.Date()-1

results <- get_everything(query  = "Inflation", page = 1, page_size = 2, language = 
          "en", sort_by = "popularity", from = Yest, to = Today, api_key = 
           Sys.getenv("NEWS_API_KEY"))
                      
OP <- results$results_df

OP <- OP[-c(1, 5:9)]
colnames(OP) <- c("News Title", "Description", "URL")

W <- print(xtable(OP), type="html", print.results=FALSE, align = "l")

email1 <-
  compose_email(
    body = md(
    c("<tr>", "<td>", "<table>", "<tr>", "<td>", "<b>", "Losers News", "</b>", W, 
      "</td>", "</tr>", "</table>","</td>", "<td>")    
     )
    )

 email1 %>%
 smtp_send(
 from = "abc@domain.com",
 to = "pqr@domain.com",
 subject = "Hello",
 credentials = creds_key(
  "XYZ"
 )
)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-14 20:17:02

无论何时安排作业,请考虑使用命令行shell (如PowerShell或Bash )来处理自动化步骤、捕获和记录错误和消息。Rscript在第二台计算机上出现故障,原因不明,您无法确定原因,因为您没有从使用TaskScheduler的控制台接收到任何错误消息。

因此,考虑PowerShell运行所有需要的Rscript.exe调用和其他命令,并捕获所有到日期标记的日志文件的错误。下面的脚本将所有控制台输出重定向到带有消息的.log文件。当Rscript命令失败时,日志将转储错误或其下方的任何控制台输出(即headtail)。定期检查计划作业后的日志。

PowerShell脚本(另存为.ps1文件)

代码语言:javascript
复制
cd "C:\path\to\scripts"

& {
    echo "`nAutomation Start: $(Get-Date -format 'u')"

    echo "`nSTEP 1: myscript.R - $(Get-Date -format 'u')"
    Rscript myscript.R

    # ... ADD ANY OTHER COMMANDS ...
    

    echo "`nCAutomation End: $(Get-Date -format 'u')"

} 3>&1 2>&1 > "C:\path\to\logs\automation_run_$(Get-Date -format 'yyyyMMdd').log"

命令行(用于任务调度程序)

代码语言:javascript
复制
Powershell.exe -executionpolicy remotesigned -File myscheduler.ps1

注意:要么在TaskScheduler作业设置中更改myscheduler.ps1所在的目录,要么在-File参数中运行绝对路径。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70715412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档