定时任务

我们可以在指定的时间以指定的频率执行任务。

注意,如果定时任务中使用了共享表或插件中的函数,启动脚本(startup.dos)中必须包含共享表的定义以及加载插件的脚本。

相关函数/命令:

定时执行一个函数:

$ def f():1+2;
$ scheduleJob(`daily, "Daily Job", 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", run{"C:\DolphinDB\script\monthlyJob.dos"}, 17:23m, 2018.01.01, 2018.12.31, 'M', 1);
monthly

这里我们用部分应用run{<script>},因为 shceduleJob 的第三个参数必须是无参数的函数。

$ 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', [2,3,4,5,6]);
PnL
$ getScheduledJobs();

userId

jobId

jobDesc

startDate

endDate

frequency

scheduleTime

days

root

PnL

Calculate Profit &...

2018.01.01

2018.12.31

W

12:00m 02:00m 14:50m

2 3 4 5 6

root

TradingTicket

Generate Trading T...

2018.01.01

2018.12.31

W

09:25m 12:00m 02:0...

2 3 4 5 6

root

daily

Daily Job

2018.01.01

2018.12.31

D

17:23m

root

monthly

Monthly Job

2018.01.01

2018.12.31

M

17:23m

1

root

weekly

Weekly Job

2018.01.01

2018.12.31

W

17:30m

2

$ deleteScheduledJob(`monthly)
$ deleteScheduledJob(`weekly)
$ deleteScheduledJob(`daily);

$ getScheduledJobs();

userId

jobId

jobDesc

startDate

endDate

frequency

scheduleTime

days

root

PnL

Calculate Profit &...

2018.01.01

2018.12.31

W

12:00m 02:00m 14:50m

2 3 4 5 6

root

TradingTicket

Generate Trading T...

2018.01.01

2018.12.31

W

09:25m 12:00m 02:0...

2 3 4 5 6