2012-07-01 25 views
10

Tôi biết về những hạn chế về bộ nhớ của nền tảng Heroku và tôi biết rằng nó có khả năng mở rộng hơn để tách ứng dụng thành web và dynos công nhân. Tuy nhiên, tôi vẫn muốn chạy các tác vụ không đồng bộ cùng với quy trình web cho mục đích thử nghiệm. Dynos là tốn kém và tôi muốn nguyên mẫu trên ví dụ miễn phí mà Heroku cung cấp.Có thể chạy nhiều quy trình trên một dyno Heroku không?

Có bất kỳ vấn đề nào với việc tạo ra một công việc mới như một quá trình hoặc tiến trình con trong cùng một dyno như một quy trình web không?

Trả lời

3

Trên ngăn xếp Cedar mới hơn, không có vấn đề gì với việc sinh ra nhiều quy trình. Mỗi dyno là một máy ảo và không có giới hạn cụ thể ngoại trừ trong bộ nhớ và sử dụng CPU (khoảng 512 MB bộ nhớ, tôi nghĩ, và 1 lõi CPU). Thực hiện theo các hướng dẫn cài đặt mới hơn cho một số ngăn xếp như Python sẽ dẫn đến một cấu hình với nhiều quá trình (máy chủ web) ra khỏi hộp.

Phần mềm được cài đặt trên dynos web có thể khác nhau tùy thuộc vào gói buildpack bạn đang sử dụng; nếu các quy trình con của bạn cần phần mềm đặc biệt thì bạn có thể phải gói nó với ứng dụng của bạn hoặc (tốt hơn) cuộn gói xây dựng của riêng bạn.

Tại thời điểm này, tôi thường nhắc bạn rằng chạy các tác vụ không đồng bộ trên dynos công nhân thay vì dynos web, với hệ thống xếp hàng nhiệm vụ thích hợp, được khuyến khích mạnh mẽ, nhưng có vẻ như bạn đã biết điều đó. Hãy ghi nhớ rằng các tài khoản chỉ có một web dyno (thông thường điều này có nghĩa là các tài khoản "miễn phí") sẽ có dyno quay xuống sau một giờ hoặc lâu hơn không nhận được bất kỳ yêu cầu web nào và mọi quá trình nền chạy trên dyno tại đó thời gian nhất thiết sẽ bị giết. Các tài khoản có nhiều dynos web không bị hạn chế này.

+0

Cách giải quyết của tôi cho việc bỏ dyno không hoạt động là cho một trong các quy trình web để khóa nguyên tử một đối tượng cơ sở dữ liệu, sau đó kiểm tra xem nhân viên có đang chạy hay không và khởi động nó. – okw