scheduleJob

Parent Previous Next


语法


scheduleJob(jobId, jobDesc, jobFunc, scheduledTime, startDate, endDate, frequency, [days])


参数


jobId是一个字符串。


jobDesc是关于任务描述的字符串。


jobFunc是一个没有参数的函数。它通常是一个部分应用。


scheduledTime是一个minute类型的标量/向量。


startDate是一个日期标量。


endDate是一个日期标量。


frequency是一个字符。它能够是下列3个值之一:"D"表示日,"W"是周,"M"是月。


days是一个整型标量/向量,表示执行定时任务的日期。如果frequency为W或M时,它是必需的。如果frequency为W,days可以取以下值:0(周日),1(周一), ...,5(周五),6(周六)。


详情


返回定时任务的任务ID。如果jobId与已有的定时任务的ID不一致,系统返回jobId。否则在jobId后面添加当前日期,"000",“001”等作为后缀,直到产生唯一的任务ID。我们可以使用getRecentJobs来查看最近完成的定时任务。


执行定时任务生成的信息保存在 jodId.msg 文件中;如果定时任务会返回值,它会保存在 jobId.object 文件中。jobId.msg jobId.object 保存在batchIobs文件夹中。我们可以分别使用getJobMessagegetJobRetrn来查看这两个文件。


例子


定时执行一个函数:



>def f():1+2;

>scheduleJob(`daily, "Daily Job 1", f, 17:23m, 2018.01.01, 2018.12.31, 'D');

daily

>scheduleJob(`weekly, "Weekly Job", f, 17:30m, 2018.01.01, 2018.12.31, 'W', 2);

weekly



定时执行一个脚本:



>scheduleJob(`monthly, "Monthly Job 1", run{"C:\DolphinDB\script\monthlyJob.dos"}, 17:23m, 2018.01.01, 2018.12.31, 'M', 1);

monthly



这里我们使用部分应用run{<script>},因为jobFunc必须是没有参数的函数。



>getJobMessage(`daily);

2018-02-08 17:23:27.166296 Start the job [daily]: Daily Job 1

2018-02-08 17:23:27.167303 The job is done.


>getJobReturn(`daily);

3



我们可以在一天中多次定时执行相同的任务:



>scheduleJob(`Trading, "Generate Trading Tickets", run{"C:\DolphinDB\script\TradingTickets.dos"}, [09:25m, 12:00m, 02:00m, 15:50m], 2018.01.01, 2018.12.31, 'D');

Trading



在这种情况下,每次执行定时任务时,任务ID是不一样的。


我们可以在每周的工作日中多次执行相同的定时任务:



>scheduleJob(`PnL, "Calculate Profit & Loss", run{"C:\DolphinDB\script\PnL.dos"}, [12:00m, 02:00m, 14:50m], 2018.01.01, 2018.12.31, 'W', [1,2,3,4,5]);

PnL