Tôi có một Play! ứng dụng với một số tác vụ tôi cần chạy theo định kỳ. Tôi có thể lên lịch các nhiệm vụ bằng cách sử dụng Akka, nhưng tôi không chắc chắn làm thế nào để bắt đầu lịch trình. Những gì tôi đang làm ngay bây giờ là có một đối tượng Scheduler và bắt đầu nó từ Global.scala
, nhưBắt đầu diễn viên Akka trong Play
// app/jobs/Scheduler.scala
package jobs
import akka.util.duration._
import play.api.libs.concurrent.Akka
import play.api.Play.current
object Scheduler {
def start() {
Akka.system.scheduler.schedule(0 seconds, 1 minutes) {
SomeTask.start()
}
}
}
và sau đó
// app/Global.scala
import play.api._
import jobs.Scheduler
object Global extends GlobalSettings {
override def onStart(app: Application) {
Scheduler.start()
}
}
vấn đề này ở đây là trong này, nhiệm vụ chạy ngay cả trong chế độ phát triển và trong các thử nghiệm, điều đó sẽ sớm trở nên rất khó chịu.
Có cách nào để lên lịch công việc với Akka chỉ ở chế độ sản xuất không?
Có nhiều phương pháp 'isProd', 'isDev' và' isTest' trên [Play] (http: //www.playframework. đối tượng org/documentation/api/2.1-RC1/scala/index.html # play.api.Play $) để tìm ra chế độ bạn hiện đang chạy. – 4e6
Cảm ơn bạn. Trong khi các phương thức bạn đề cập phụ thuộc vào việc có 'ứng dụng' tiềm ẩn trong phạm vi - không phải như vậy, vì đối số cho 'onStart' không được ngầm định - theo liên kết của bạn, tôi thực sự thấy rằng có thể chỉ cần kiểm tra app.mode, làm như vậy. Nếu bạn muốn đưa câu trả lời đó vào một câu trả lời, tôi sẽ rất vui khi chấp nhận nó. – Andrea