如何在云托管服务器(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.
让我先回答显而易见的问题。我为什么要这样做?事实上,我不知道。我在下面制作了以下程序,但它被设计为 运行 在远程服务器上。我基本上是在使用套接字库,但我想将它托管在另一台机器上,最好是 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.