| Line 433... |
Line 433... |
| 433 |
* it is direct HTTP plus the captcha solver, no ChromeDriver, so it does not
|
433 |
* it is direct HTTP plus the captcha solver, no ChromeDriver, so it does not
|
| 434 |
* contend for the resource the oppo/realme pass is rationing.
|
434 |
* contend for the resource the oppo/realme pass is rationing.
|
| 435 |
*
|
435 |
*
|
| 436 |
* ~9,510 imeis at roughly 2.5s each is about 6.6 hours.
|
436 |
* ~9,510 imeis at roughly 2.5s each is about 6.6 hours.
|
| 437 |
*/
|
437 |
*/
|
| - |
|
438 |
// One chunk of 250 every 20 seconds until the day's pool is empty, then idle ticks
|
| - |
|
439 |
// until midnight. Was a single 00:15 pass; the method name is kept so the
|
| - |
|
440 |
// cron_job_* series and anything keyed on it stay continuous.
|
| - |
|
441 |
//
|
| - |
|
442 |
// The 20s cadence is not a throttle -- vivo is 0.24s an imei and does not rate-limit
|
| - |
|
443 |
// us. It is what makes progress durable: the old pass held one thread for its whole
|
| - |
|
444 |
// run and kept its position nowhere else, so a restart mid-pass forfeited the rest.
|
| 438 |
@Scheduled(cron = "0 15 0 * * *")
|
445 |
@Scheduled(fixedDelay = 20 * 1000)
|
| 439 |
public void vivoImeiActivation() throws Throwable {
|
446 |
public void vivoImeiActivation() throws Throwable {
|
| 440 |
log.info("startTimevivoImeiActivation" + LocalDateTime.now());
|
- |
|
| 441 |
|
- |
|
| 442 |
scheduledTasks.checkImeiActivation();
|
447 |
scheduledTasks.checkImeiActivation();
|
| 443 |
|
- |
|
| 444 |
log.info("endTimevivoImeiActivation" + LocalDateTime.now());
|
- |
|
| 445 |
|
- |
|
| 446 |
}
|
448 |
}
|
| 447 |
|
449 |
|
| 448 |
/**
|
450 |
/**
|
| 449 |
* Itel activation from Carlcare, Transsion's own after-sales endpoint. 50 imeis every 5
|
451 |
* Itel activation from Carlcare, Transsion's own after-sales endpoint. 50 imeis every 5
|
| 450 |
* minutes, which spreads the work over the whole day rather than bursting: 14,400 lookups a
|
452 |
* minutes, which spreads the work over the whole day rather than bursting: 14,400 lookups a
|
| Line 554... |
Line 556... |
| 554 |
// which caused more failures, which caused more requests. A snapshotted daily pass
|
556 |
// which caused more failures, which caused more requests. A snapshotted daily pass
|
| 555 |
// bounds that by construction: a failure costs one retry tomorrow, never one in
|
557 |
// bounds that by construction: a failure costs one retry tomorrow, never one in
|
| 556 |
// five minutes, however the far end behaves.
|
558 |
// five minutes, however the far end behaves.
|
| 557 |
//
|
559 |
//
|
| 558 |
// Judge this change on dates written, not on timeout count.
|
560 |
// Judge this change on dates written, not on timeout count.
|
| - |
|
561 |
// One chunk of 25 for one brand every 20 seconds, oppo and realme by turns, until
|
| - |
|
562 |
// both pools are empty for the day. Was a single 00:30 pass that held this thread for
|
| - |
|
563 |
// 20+ hours; the method name is kept so the cron_job_* series stays continuous.
|
| - |
|
564 |
//
|
| - |
|
565 |
// fixedDelay, not fixedRate: the gap is measured from the END of a tick, so a chunk
|
| - |
|
566 |
// that takes six minutes is not immediately followed by a queued one. The lane
|
| - |
|
567 |
// self-throttles to whatever the far ends are actually giving us.
|
| - |
|
568 |
//
|
| - |
|
569 |
// The start/end log lines are gone deliberately -- at 4,320 ticks a day they were
|
| - |
|
570 |
// pure volume on a log that is already 1.8GB. StandAlone logs the day boundary and
|
| - |
|
571 |
// the chunks; idle ticks say nothing at all.
|
| 559 |
@Scheduled(cron = "0 30 0 * * *")
|
572 |
@Scheduled(fixedDelay = 20 * 1000)
|
| 560 |
public void oppoRealmeImeiActivation() throws Throwable {
|
573 |
public void oppoRealmeImeiActivation() throws Throwable {
|
| 561 |
log.info("startTimeOppoRealmeImeiActivation {}", LocalDateTime.now());
|
- |
|
| 562 |
|
- |
|
| 563 |
standAlone.checkBrowserImeiActivation();
|
574 |
standAlone.checkBrowserImeiActivation();
|
| 564 |
|
- |
|
| 565 |
log.info("endTimeOppoRealmeImeiActivation {}", LocalDateTime.now());
|
- |
|
| 566 |
}
|
575 |
}
|
| 567 |
|
576 |
|
| 568 |
@Scheduled(cron = "0 0 * * * *")
|
577 |
@Scheduled(cron = "0 0 * * * *")
|
| 569 |
public void markBlueDartOrderDelivered() throws Throwable {
|
578 |
public void markBlueDartOrderDelivered() throws Throwable {
|
| 570 |
log.info("startTime" + LocalDateTime.now());
|
579 |
log.info("startTime" + LocalDateTime.now());
|