Tôi có một ứng dụng ruby trên đường ray trong đó tôi đang cố gắng tìm cách chạy mã một vài giây một lần.nhiệm vụ định kỳ đường ray
Tôi đã tìm thấy rất nhiều thông tin và ý tưởng bằng cách sử dụng cron, hoặc triển khai cron, nhưng chúng chỉ chính xác đến từng phút và/hoặc yêu cầu các công cụ bên ngoài. Tôi muốn khởi động tác vụ sau mỗi 15 giây hoặc lâu hơn và tôi muốn nó hoàn toàn nằm trong ứng dụng (nếu ứng dụng dừng lại, các tác vụ dừng lại và không có thiết lập bên ngoài).
Điều này đang được sử dụng để tạo nền dữ liệu bộ nhớ cache. Cứ sau vài giây, nhiệm vụ sẽ tập hợp một số dữ liệu, và sau đó lưu trữ nó trong một bộ nhớ cache được sử dụng bởi tất cả các yêu cầu của máy khách. Nhiệm vụ khá chậm, vì vậy nó cần chạy trong nền và không chặn các yêu cầu của máy khách.
Tôi khá mới với ruby, nhưng có nền perl mạnh, và cách tôi giải quyết điều này sẽ tạo ra một bộ đếm thời gian & xử lý mà dĩa, chạy mã và sau đó thoát khi hoàn tất.
Nó thậm chí còn đẹp hơn để chỉ mô phỏng một yêu cầu của khách hàng và có bản thân bộ điều khiển đường ray. Bằng cách này tôi có thể khởi động nhiệm vụ bằng cách nhấn URI cho nó (mặc dù vì nhiệm vụ sẽ chạy mỗi vài giây, tôi nghi ngờ tôi sẽ cần đến, nhưng có thể có sử dụng trong tương lai). Mặc dù nó sẽ là tầm thường để chỉ có bộ điều khiển gọi bất cứ phương thức nào được gọi bởi trình lập lịch biểu nhiệm vụ định kỳ (một khi tôi có một).
Tôi đã kết thúc chỉ việc tạo một công cụ đơn giản mà dĩa khi ứng dụng đường ray bắt đầu và định kỳ chạy một danh sách các nhiệm vụ. Mỗi vòng lặp thông qua nó sẽ kiểm tra xem cha mẹ vẫn còn sống và bỏ đi nếu không. – Patrick