如何在heroku上启动Python SimpleHTTPServer?

时间:2017-07-18 16:32:19

标签: python heroku

我想在heroku上启动Python HTTPServer。请注意,这不是Python框架。代码段附在下面。我如何能够在Heroku上启动此服务器?我能够在本地计算机上运行此服务器。但我希望它部署在Heroku上。请提供见解。

服务器代码:

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()

2 个答案:

答案 0 :(得分:3)

当heroku运行您的进程时,它会将环境变量PORT定义到您应该公开服务器的内部端口。然后,您的服务器将通过端口80(默认HTTP端口)从Internet访问。

Python可以使用os.environ访问环境变量。

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

os.envron docs here

您可以详细了解Heroku如何处理端口here

答案 1 :(得分:1)

使用一行创建Procfile

web: python yourscript.py