Tôi có một ứng dụng web có API và cơ sở dữ liệu được liên kết.django triển khai các điểm cuối web & api riêng biệt trên heroku
Tôi muốn sử dụng cùng một mô hình Django trong API, nhưng có nó được phục vụ riêng biệt bởi các quy trình khác nhau để tôi có thể mở rộng quy mô một cách độc lập.
Tôi cũng không cần API để phân phát nội dung tĩnh hoặc bất kỳ chế độ xem nào khác.
Các biến chứng là các tuyến đường tôi đã xác định có API và chia sẻ tên miền gốc webapp:
http://domain.com/normal/application/stuff
http://domain.com/api/different/stuff
và bổ sung các ứng dụng Django của tôi phụ thuộc vào mô hình và các hằng số của nhau (vì vậy hai khác nhau settings.py
file với khác nhau INSTALLED_APPS
không hoàn toàn giải quyết nó).
Tôi đoán một cách là tôi có thể xác định các quy trình khác nhau trong Procfile của tôi, chỉ bắt đầu ứng dụng Django, nhưng trong một trong các quy trình có thể có các biến môi trường khác nhau? Tôi không nghĩ rằng tôi có thể thay đổi môi trường cho mỗi Proc với heroku:config
, tôi nghĩ rằng nó thực sự sẽ là một chỉ thị trong Procfile.
Bất kỳ ai có kinh nghiệm hoặc thông tin chi tiết về điều này? Cảm ơn!
FWIW, vấn đề lớn hơn với những gì bạn muốn làm là không làm thế nào để cấu hình Django, nó là một thực tế là bạn muốn làm cả hai dưới cùng một tên miền. Điều này có nghĩa là bạn không thể chia các ứng dụng được phân đoạn trên các dynos web riêng biệt nếu bạn muốn có thể chia tỷ lệ chúng một cách riêng biệt ở cấp độ của một dyno. Một số máy chủ WSGI cung cấp đủ khả năng cấu hình để phân đoạn một ứng dụng web trong một máy chủ và chỉ định số lượng quy trình/luồng khác nhau cho các phần khác nhau của ứng dụng, nhưng máy chủ gGorn WSGI mà Heroku khuyến cáo không phải là một trong số chúng. –
Tôi vẫn có thể sử dụng một ứng dụng Django/ứng dụng Heroku đơn lẻ nhưng có một settings.py cho một tên miền và một cho một tên miền phụ? – lollercoaster
Bạn có thể làm điều đó nếu bạn đang sử dụng Apache/mod_wsgi làm máy chủ WSGI, nhưng thiết lập Heroku không cho phép chạy với Python 2.7. Chỉ có thể sử dụng nó với Python 3.3+ và sau đó nó vẫn đòi hỏi một số thủ thuật trên một phần của mod_wsgi để cho phép nó được cài đặt trên Heroku. Thật không may không thể đảm bảo rằng Heroku sẽ không thay đổi mọi thứ vì vậy không hoạt động trên Python 3.3+. –