我的需求是这样的。
我要请求第三方接口,每天9:00到23:00 ,理论上是20分钟第三方会产生一次数据,我要拿一次数据。。但是实际情况是 接口数据会延迟3-5分钟。。也就是我9:23-9:25 能拿到数据。
另外,我还需要保证拿到的数据唯一的。。不能重复请求。。
这个任务我怎么写呢??
请各位大佬给点思路。
我要做一个对接彩票接口。。
彩票是准时20分钟出一次数据的,,但是第三方机构需要延迟3分钟左右能拿到数据。。所以我得等到第三方拿到数据,我才能从第三方拿数据。。。 a我不能一直循环请求,然后判断每期彩票是否拿到。。因为接口很贵的。。。。
没太看明白问题在哪?你每20分钟请求一次不行吗?
彩票。。我肯定需要尽量的能拿到实时数据啊。。这样用户才可以参考本次数据对下次数据进行评测 看买什么号码啊。
@五百万: 那你就从9:24开始,每20分钟查询一次吧,如果第三方接口稳定的话。如果第三方接口有延迟的概率,那么第一次没有访问到后,再过1分钟再查,还没有,再过一分钟再查,直到查到为止,然后再恢复20分钟查一次的频率
不能重复请求就按照最坏情况。 9:20 就 9:25 拿,9:40,就 9:45。
添加一张 任务表,Task(Id,ExecuteTime,IsExecued....)等等字段,每天可以分次,或者一次性生成所有任务,定时遍历任务,取出需要执行的任务。执行完,更新任务记录。
彩票。。我肯定需要尽量的能拿到实时数据啊。。
这样用户才可以参考本次数据对下次数据进行评测 看买什么号码啊。
但是您说的也是一种思路。
@五百万: 你的想法有些奇怪,想实时,还不想多查询,这是冲突的。想实时的话,就要求尽量早获取,你又说不稳定,就只能在尽量早的基础上加上误差时间。例如 9:20 就 9:23 去取,查不到,等一分钟(你自己定),然后再去获取,直到查到数据(或者配置一个最大重试次数)。然后等下个执行时间点。
你都延遲3-5分鐘了,又捨不錢,還談什麼即時...
又来和我抢豆?
@会长:
我來賺2豆就走
这3-5分钟是第三方的延迟,,全国都一样。
不是不舍得花钱,但是不能因为程序不严禁,花冤枉钱不是
。
bool Fetch(Result result)
void OnTickTask()//异步自行补充,然后定时到指定时间,来执行一次
{
for()
{
if(Fetch())break;
Thread.Sleep(0);//随便搞,反正不是自己服务器
}
}
可以设置定时任务 每分钟执行 然后每间隔20分钟调用接口(例如知道有延迟可以设定 23 下一次43)。如果获取失败则每分钟都会去调用一下 设置一个参数 到23/43/03 为true。如果调用成功则改为false true 才调用接口 这样就实现每20分钟调用一次。调用失败后每分钟都会去调用
用定时任务去请求一次
做彩票接口我熟.就是定时任务,然后第一步是计算当前要获取的期数.
然后循环获取开奖结果.直到返回的期数等于要的期数.