2015-09-14 19 views
5

Về mặt kỹ thuật tôi có thể cài đặt cron trên máy và cuộn url, nhưng tôi đang cố gắng tránh điều đó. Bất kỳ cách nào để thực hiện điều này?Lập lịch biểu kiểu Crontab trong Play 2.4.x?

Lý do tôi muốn tránh cron là vì vậy tôi có thể dễ dàng thay đổi lịch biểu hoặc dừng hoàn toàn mà không cần ssh'ing vào máy để làm như vậy.

Trả lời

5

Hãy xem: https://github.com/enragedginger/akka-quartz-scheduler. Hãy tham khảo http://quartz-scheduler.org/api/2.1.7/org/quartz/CronExpression.html để biết các CronExpressions và ví dụ hợp lệ.

Một ví dụ được lấy từ các tài liệu:

Một lịch trình ví dụ gọi Mỗi-30 Giây đó, khéo léo, hỏa hoạn-off mỗi 30 giây:

akka { 
    quartz { 
    schedules { 
     Every30Seconds { 
     description = "A cron job that fires off every 30 seconds" 
     expression = "*/30 * * ? * *" 
     calendar = "OnlyBusinessHours" 
     } 
    } 
    } 
} 

Bạn có thể tích hợp này vào Play của bạn! ứng dụng (có thể là trong ứng dụng toàn cầu của bạn)

+0

vâng tôi cũng đang xem nó. tôi nghĩ rằng có một cái gì đó được xây dựng để chơi mà tôi có thể làm việc với, tôi nhớ đã có "công việc" lớp học đã được gỡ bỏ ... – iCodeLikeImDrunk

+0

http://stackoverflow.com/questions/9339714/where-is-the -job-support-in-play-2-0 – nafg

3

Bạn có thể sử dụng bộ lập lịch Akka.

val scheduler = Akka.system(app).scheduler 
scheduler.schedule(0 seconds, 1 hour) { 
    // run this block every hour 
} 

Tham số đầu tiên là sự chậm trễ, vì vậy nếu bạn muốn trì hoãn thời gian cụ thể, bạn có thể dễ dàng tính toán thời gian mục tiêu với một số số ngày đơn giản.

+0

scheduler tôi biết, im hơn tìm kiếm cái gì cho phép tôi để chạy một cái gì đó giống như "40 06 * * 1-5 " – iCodeLikeImDrunk

+0

Từ https://github.com/enragedginger/akka-quartz-scheduler:" Bộ lập lịch mặc định của Akka cũng được thực hiện xung quanh một HashedWheelTimer - một mất mát chính xác tiềm năng cho công việc, vì nó không cung cấp đảm bảo mạnh mẽ trên thời gian thực hiện. " – nafg

2

Check-out https://github.com/philcali/cronish

Một số mã ví dụ từ README.md:

val payroll = task { 
    println("You have just been paid... Finally!") 
} 

// Yes... that's how you run it 
payroll executes "every last Friday in every month" 

val greetings = job (println("Hello there")) describedAs "General Greetings" 

// give a delayed start 
val delayed = greetings runs "every day at 7:30" in 5.seconds 

// give an exact time to start 
val exact = greetings runs "every day at noon" starting now + 1.week 

// resets a job to its definition 
val reseted = exact.reset() 

reseted starting now + 1.day 
+0

trông rất dễ sử dụng! được gắn dấu sao! – iCodeLikeImDrunk

Các vấn đề liên quan