Tôi gặp sự cố khi chạy Đã bị trì hoãn :: Công việc trên Heroku. Hầu hết các công việc được xếp hàng đợi để thực thi chậm hai lần (thỉnh thoảng chỉ một lần). Vì vậy, hầu hết các email Sendgrid của tôi được gửi đi trùng lặp và hầu hết các giao dịch ActiveMerchant của tôi đều cố gắng tự giải quyết hai lần!Bị trì hoãn :: Công việc chạy hai lần trên Heroku?
Chúng tôi có 2 công nhân đang chạy trên trường hợp Heroku của chúng tôi. Trùng hợp ngẫu nhiên? Tôi nghĩ chúng ta cần hai vì chúng tôi cũng có một cron cho các bản sao lưu và các công cụ.
Các công việc xảy ra hai lần xảy ra ngay trên đầu trang của nhau (vô cùng gần). Đó là một tình trạng chủng tộc, nhưng do cái gì?
Các chi tiết cụ thể như sau:
$ heroku stack
aspen-mri-1.8.6
bamboo-mri-1.9.2
* bamboo-ree-1.8.7
cedar (beta)
Chúng tôi chạy 10 dynos web, và có một cơ sở dữ liệu Ronin. Plugin-khôn ngoan chúng ta có:
Basic Release Management FREE
Cron Daily Cron FREE
Custom Domains FREE
Expanded Logging FREE
Hostname SSL 20.00 PER MONTH
PG Backups Basic FREE
Sendgrid Pro 20.00 PER MONTH
Shared Database 5MB FREE
Trong Gemfile:
gem 'rails', '3.0.6'
gem 'delayed_job', :git => 'git://github.com/collectiveidea/delayed_job.git', :tag => 'v2.1.2' # 3.x doesn't seem to work with Heroku
xử lý của tôi trông giống như:
class OrderEmailJob < Struct.new(:order_id, :email_type)
def perform
OrderMailer.send(email_type, Order.find(order_id)).deliver
end
end
và đang xếp hàng đợi như:
Delayed::Job.enqueue OrderEmailJob.new(self.id, :order_confirmation)
tôi đã cố gắng rất nhiều các phiên bản khác nhau của DJ nhưng đây là phiên bản duy nhất Tôi có thể làm việc, chẳng hạn như trên Heroku.
Thực sự sẽ đánh giá cao bất kỳ đề xuất nào. Điều này là rất xấu cho trang web của chúng tôi.
bạn nên đăng công việc và mã cron của mình. – s84
để bạn có định nghĩa 'send' trong thư của bạn? – s84
@Codeglot Không, đó là phương thức gửi ruby http://ruby-doc.org/core/classes/Object.html#M000999. – user874500