如果你主要關心的是每分鐘加載rails環境來運行腳本,我會建議mailgun以及一些cron替代品。
我使用bluepill + clockwork + delayed_job的組合來處理這個問題。我有自定義的工作,打which就像Delayed::Job.enqueue MyJob.new
一樣簡單。邏輯被捕獲在作業的perform
方法中,這有助於最小化依賴關係(如果有的話)。
clockwork用於排隊延遲作業只加載最小的依賴關係,保持內存佔用最小。
bluepill用於監控延遲的工人和發條過程,並在發生故障或重新啓動時啓動備份,以防他們失控。
一般內存使用情況:20MB(bluepill)+ 25MB(發條)+ 80-90MB(延遲工人)clockwork.rb的
實施例:
ENV['RAILS_ENV'] ||= "development"
ENV['RACK_ENV'] = ENV['RAILS_ENV']
require 'clockwork'
require 'mongoid'
require 'delayed_job'
require 'delayed_job_mongoid'
include Clockwork
base_directory = File.absolute_path(File.dirname(__FILE__))
require File.join(base_directory, "../jobs/fetch_comments_job.rb")
require File.join(base_directory, "../jobs/news_letter_job.rb")
Mongoid.load!(File.join(base_directory, "../config/mongoid.yml"))
every(1.minute, "pop.comments") { Delayed::Job.enqueue FetchCommentsJob.new}
every(1.day, "send.newsletter", :at => '22:30') { Delayed::Job.enqueue NewsLetterJob.new}
* [...]從我的info @ mydomain轉發。com郵件帳戶到GMail收件箱,然後有一個Rails lib腳本使用MMS2R和TMail訪問GMail [...]。*爲什麼這是必要的?現在還有其他解決方案,爲什麼不直接從您的mydomain郵箱下載電子郵件? – Behrang
如果您擔心每次我建議您查看[link](https://github.com/bvandenbos/resque-scheduler)時加載所有rails環境的cron作業。 – cicloon
@Behrang - true我可以這樣做,更關心的是如何讓我的應用程序訪問我使用的任何郵件帳戶並有效地處理附件,不希望每分鐘或每次腳本運行時啓動一次rails實例。理想情況下,我希望將傳入的電子郵件/附件作爲POST請求發送給控制器....但由於附件大小較大,如果同時發送多個請求,這可能會很慢。 – Jason