2016-07-17 11 views
6

Tôi đang cố gắng phân phát một hình ảnh tương tác bokeh qua heroku. Con số tôi đang cố gắng phục vụ về cơ bản là tương đương với hình này (example, code). Tôi mới vào cả hai bokehheroku vì vậy tôi khá chắc chắn rằng tôi đang thiếu một cái gì đó khá cơ bản - Tôi nghĩ rằng những gì tôi đang cố gắng làm nên khá đơn giản.Cung cấp hình bokeh tương tác trên heroku

Trước tiên, tôi có thể phục vụ số liệu cục bộ của mình bằng cách sử dụng lệnh bokeh serve --show myapp. Trong đó myapp là tên của mô-đun python bao gồm hình bokeh. Lưu ý rằng cờ --show chỉ cần nhắc bokeh để mở cửa sổ trình duyệt khi hình được tạo và máy chủ đang chạy.

Tiếp theo, tôi đã thiết lập tài khoản heroku và đã tạo ứng dụng đầu tiên của mình, theo các bước trong Heroku - Getting Started With Python tutorial. Kho lưu trữ git của tôi bao gồm myapp, một tệp requirements.txtProcfile.

Than ôi, có điều gì đó không hoạt động và tôi bị bối rối. Tôi đã thử một loạt các tùy chọn khác nhau trong số Procfile của mình và không có tùy chọn nào hoạt động. Kể từ khi lệnh bokeh serve ... bắt đầu một máy chủ, không nên một Profile trông như thế này làm các trick:

web: bokeh serve --port $PORT myapp 

nên làm việc đó? Có lẽ tôi đang thiếu một cái gì đó và tôi cần phải tạo ra một ứng dụng flask kết thúc tốt đẹp quanh ứng dụng bokeh của tôi nhưng theo như tôi có thể nói, điều đó dường như không cần thiết. Có lẽ ai đó biết về một hướng dẫn tốt đẹp mà kéo tất cả các bước này với nhau, tôi đã không tìm thấy một hoàn chỉnh nào được nêu ra.

Cập nhật: Tôi đang dán một số nhật ký heroku của mình bên dưới. Làm thế nào để bạn xử lý vấn đề này --host whitelist?

2016-07-17T05:00:46.513139+00:00 heroku[slug-compiler]: Slug compilation started 
2016-07-17T05:00:46.366909+00:00 heroku[api]: Deploy 9b63d8a by [email protected] 
2016-07-17T05:00:46.367087+00:00 heroku[api]: Release v4 created by [email protected] 
2016-07-17T05:00:46.624937+00:00 heroku[web.1]: State changed from crashed to starting 
2016-07-17T05:00:55.188978+00:00 heroku[web.1]: Starting process with command `bokeh serve --port=39665 myapp.py` 
2016-07-17T05:00:57.876287+00:00 app[web.1]: 2016-07-17 05:00:57,876 Starting Bokeh server on port 39665 with applications at paths ['/myapp'] 
2016-07-17T05:00:57.868758+00:00 app[web.1]: 2016-07-17 05:00:57,868 Starting Bokeh server version 0.12.0 
2016-07-17T05:00:57.876378+00:00 app[web.1]: 2016-07-17 05:00:57,876 Starting Bokeh server with process id: 3 
2016-07-17T05:00:58.800309+00:00 heroku[web.1]: State changed from starting to up 
2016-07-17T05:00:59.970326+00:00 app[web.1]: 2016-07-17 05:00:59,970 Rejected connection from host 'myapp.herokuapp.com' because it is not in the --host whitelist 
2016-07-17T05:00:59.973495+00:00 app[web.1]: 2016-07-17 05:00:59,970 403 GET/(XX.XX.XXX.XX) 1.29ms 
2016-07-17T05:00:59.975282+00:00 heroku[router]: at=info method=GET path="/" host=myapp.herokuapp.com request_id=xxxxxxxxxxxxx fwd="XX.XX.XX.XX" dyno=web.1 connect=1ms service=4ms status=403 bytes=219 

Trả lời

8

Tôi sẽ trả lời câu hỏi của riêng mình vì cuối cùng tôi có thể làm việc này và chưa ai trả lời câu hỏi này.

tôi đã kết thúc với một Procfile trông như thế này:

web: bokeh serve --port=$PORT --host=myapp.herokuapp.com --host=* \ 
    --address=0.0.0.0 --use-xheaders myapp.py 

một chút nền tảng về những gì tất cả các đối số có nghĩa (như xa như tôi có thể nói):

--port: xác định cổng mà máy chủ bokeh sẽ lắng nghe trên, $PORT được thiết lập bởi heroku

--host=myapp.herokuapp.com--host=*: chỉ định tên máy chủ như myapp.heroku..., ký tự đại diện được cho phép để cho phép tất cả các máy chủ được chấp nhận. Tôi không chắc điều này cần thiết nữa.

--address=0.0.0.0: Tôi nghĩ rằng điều này sẽ cho biết bokeh để tự mình tìm ra, địa chỉ IP nào sẽ được bật.

--use-xheaders: gây bokeh để ghi đè các IP từ xa và URI scheme/giao thức

Tôi rất vui khi thực hiện chỉnh sửa này hoặc chấp nhận một người hiểu biết nhiều hơn trả lời nếu có những vấn đề với cách tiếp cận này.

+0

Bạn có thể triển khai nó bằng bình không? Tôi có một ứng dụng bình làm việc tại địa phương, nhưng không thể tìm ra cách làm cho nó hoạt động trên Heroku. Đây là [bokeh_plot.py] (https://www.dropbox.com/s/ohaa388wpmkvpxt/bokeh_plot.py?dl=0) và [app.py] (https://www.dropbox.com/s/ owla19e58hgijgd/app.py? dl = 0) chứa mã bình. Kịch bản app.py chứa một tiến trình con nơi máy chủ bokeh được khởi động để ứng dụng có thể bắt đầu bằng cách chạy 'python app.py' và ứng dụng được kết xuất thành công trong localhost: 5000. Bây giờ, tôi không biết làm thế nào để sửa đổi bokeh_subprocess để làm cho nó hoạt động trên Heroku. – multigoodverse

+0

Tôi chưa bao giờ có một ứng dụng bình chạy với thiết lập của tôi. Tôi vừa sử dụng lệnh 'bokeh serve' và có thể bỏ qua bước 'bình'. – jhamman

+0

Tôi hiểu, nhưng bạn cần một khung công tác web nếu bạn cần thêm nội dung khác dọc theo biểu đồ bokeh của mình, đúng không? – multigoodverse

Các vấn đề liên quan