2017-07-18 41 views

回答

1

用單線創建Procfile上。然後您的服務器將通過80端口(默認HTTP端口)從互聯網訪問。

Python可以通過os.environ訪問環境變量。

所以,你可以使用:
PORT = environ['PORT']

os.envron文檔here

你可以閱讀更多有關的Heroku如何處理端口here

+0

以上評論無效。因爲我正在定義一個你看到的端口。我正在打開https://myprojectname.heroku.com,但網頁未加載或不打印輸出。做這項工作的正確方法是什麼? –

1

當Heroku上運行您的程序,它定義了環境變量PORT你應該暴露你的服務器的內部端口:

import http.server 
from http.server import HTTPServer, BaseHTTPRequestHandler 
import socketserver 
import threading 

PORT = 5001 

class myHandler(BaseHTTPRequestHandler): 
    def do_GET(self): 
     self.write("Heroku is awesome") 

class ThreadedTCPServer(socketserver.ThreadingMixIn, socketserver.TCPServer): 
    pass 

try: 
    server = ThreadedTCPServer(('', PORT), myHandler) 
    print ('Started httpserver on port ' , PORT) 
    ip,port = server.server_address 
    server_thread = threading.Thread(target=server.serve_forever) 
    server_thread.daemon = True 
    server_thread.start() 
    allow_reuse_address = True 
    server.serve_forever() 

except KeyboardInterrupt: 
    print ('CTRL + C RECEIVED - Shutting down the REST server') 
    server.socket.close() 
+0

這沒有幫助。使用PORT = environ ['PORT']而不是使用PORT = 8081.它在environ ['PORT']顯示關鍵錯誤。 –

+0

這究竟是什麼,我需要這樣做,這有效嗎? –

+0

在heroku上運行時,或者在本地計算機上運行時,是否收到錯誤消息? – Noskcaj