2017-07-18 45 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