如何在云托管服务器(Google、Amazon、Azure...)上托管 python 服务器脚本?

How can I host a python server script, on a cloud hosted server (Google, Amazon, Azure...)?

让我先回答显而易见的问题。我为什么要这样做?事实上,我不知道。我在下面制作了以下程序,但它被设计为 运行 在远程服务器上。我基本上是在使用套接字库,但我想将它托管在另一台机器上,最好是 google、amazon、azure 等。但是,正如我在尝试之前所知道的那样,这有点不可能。 Google 应用引擎给了我一个错误,例如 "access denied to socket blah blah blah"。

我觉得我还有 2 个选择:

我可以继续 运行 我自己的服务器上的这个代码,如果我能弄清楚如何在托管的云基础服务器上托管这个服务器脚本,或者我可以拿走代码,每一点都没有' 包含服务器部分,并使其通过 POST 请求从客户端获取 "data"。

数据是从客户端发送的...

bap = {}
while 1:
    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    server_address = ("localhost", 8081)
    #print 'starting up on %s port %s' % server_address
    server.bind(server_address)
    server.listen(5)
    connection, client_address = server.accept()
    #print 'connection from', connection.getpeername()
    server.close()
    data = connection.recv(4096)

    if data in bap:
        print data + " is checking in!!!"
        for k, v in bap.iteritems():
            if k == data:
                bap[k] = 10
                print bap
                c = open('check.json', "w")
                wiz = json.dumps(bap)
                c.write(wiz)
                c.close()
            else:
                bap[k] -= 1
                if bap[k] < 0:
                    print k + " is Offline!!!"
                    mail()
                    c = open('log.txt', "a")
                    wiz = json.dumps(bap)
                    time1 = datetime.datetime.now().strftime("%m/%d/%y %H:%M ")
                    c.write(k + " is offline!!! "+ time1 + "\n")
                    c.close()
                else:
                    print bap
    else:
        bap[data] = 10
        print data + " was added!!!"

运行 python 监听外部端口的脚本可以在 Amazon EC2 上完成。

1) 在 Amazon Web Services 使用管理控制台创建 EC2 实例。

2) 编辑与您的实例关联的安全组,以便它打开您希望 python 脚本侦听的端口号。

3) 在 EC2 实例上上传并 运行 您的脚本。确保您的脚本侦听的端口号与您在安全组中打开的端口号相同。

如果您通过 SSH 连接到您的 EC2 实例,您可能想要 运行 "background process" 中的 python 脚本使用 TMUX 之类的东西。否则,当您终止 SSH 连接时,您的 python 脚本将停止 运行ning.