Tôi đang sử dụng Python/Django trên Heroku (Cedar Stack) và tôi đã có một lệnh quản lý mà tôi cần viết để kéo tệp ra khỏi thùng S3 và xử lý nó. Tôi không chắc tôi hiểu cách sử dụng hệ thống tệp tạm thời. Chỉ có một số thư mục có thể ghi được không? Tôi tìm thấy một bài viết khác ngụ ý rằng chỉ có một số thư mục có thể ghi được (nhưng, nó dường như không áp dụng cho ngăn xếp Cedar). Tôi tìm thấy dev này article nhưng nó không đi vào chi tiết nhiều (lưu ý: Tôi hiểu rằng nó chỉ là tạm thời. Tôi chỉ cần giải nén tệp và xử lý tệp). Tôi có thể tạo một thư mục ở bất cứ đâu dưới gốc của ứng dụng không? Và làm thế nào tôi có được điều đó? Có vẻ như tôi có thể chỉ cần sử dụng $ HOME. Tôi đã làm một chút thử nghiệm bằng cách kết nối quaLàm thế nào để sử dụng hệ thống tập tin tạm thời của heroku
$ heroku run bash
và chạy:
$ echo #HOME
lợi nhuận:
/app
và chạy:
$ mkdir $HOME/tmp
tạo một thư mục trong th e gốc của ứng dụng và cung cấp cùng một người dùng và nhóm với các tệp và thư mục khác.
... Vì vậy, bất cứ điều gì tôi đang thiếu ở đây? Một cách tốt hơn để làm điều đó? Có một biến môi trường hệ điều hành cho điều này? Tôi đã chạy "env" và tôi không thấy cái nào tốt hơn.
Lưu ý rằng, bất cứ khi nào bạn thực hiện 'Heroku run', này quay lên mới [one-off Dyno] (https://devcenter.heroku.com/articles/one-off-dynos) trên Heroku rằng * sẽ tính phí *. Bạn có thể kiểm tra trạng thái của dynos của bạn sau đó thông qua 'heroku ps' để xem họ có đang chạy hay không. Khi sử dụng 'bash' heroku chạy, dyno được gắn với thiết bị đầu cuối của bạn, tức là nó sẽ dừng khi bạn đóng phiên đầu cuối (ví dụ: với Ctrl + C). Hơn nữa, dyno một lần không có quyền truy cập vào các tệp từ dynos khác của bạn được viết vào thời gian chạy, vì vậy 'ls' v.v. sẽ không hoạt động để xem những gì trên các dynos khác của bạn (ngoại trừ các tệp ứng dụng của bạn). – caw
@MarcoW. Tôi muốn làm nổi bật imporatnce của bình luận của bạn! Điều này là không rõ ràng rằng 'heroku run' quay lên một dyno mới. Đã cho tôi một thời gian để hiểu lý do tại sao tôi không thể truy cập thông qua HTTP các tập tin được tạo thông qua kiểm tra echo 'heroku run '> /app/web/test.html" '...Nó chỉ ra họ đang tạo ra tại một lần dyno và không bao giờ phải đối mặt với web ... –