Python 3.x 如何分解http服务器?
我编写了一个http服务器,知道如何在本地运行它。然后我想在谷歌服务器上运行它。在谷歌上创建服务器时,我同时包含了http和https的收费标准。服务器启动,但很可能仅在本地启动。这是我的外部服务器ip 35.223.69.89。当我尝试像35.223.69.89:800那样连接时,连接失败。这是我的密码:Python 3.x 如何分解http服务器?,python-3.x,Python 3.x,我编写了一个http服务器,知道如何在本地运行它。然后我想在谷歌服务器上运行它。在谷歌上创建服务器时,我同时包含了http和https的收费标准。服务器启动,但很可能仅在本地启动。这是我的外部服务器ip 35.223.69.89。当我尝试像35.223.69.89:800那样连接时,连接失败。这是我的密码: import socket import selectors import os selector = selectors.DefaultSelector() def server(
import socket
import selectors
import os
selector = selectors.DefaultSelector()
def server():
socket_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket_server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
socket_server.bind(('0.0.0.0', 800))
socket_server.listen()
print('Сервер запустился')
selector.register(fileobj=socket_server, events=selectors.EVENT_READ, data=accept_connection) # Регистрируем socket в буфере
def accept_connection(server_socket):
''' Получаем запрос от пользователя
регистрируем соединение в буфере '''
client_socket, addres = server_socket.accept()
print('Connection from ', addres),
selector.register(fileobj=client_socket, events=selectors.EVENT_READ, data=send_http)
def send_http(client_socket):
''' Отвечаем пользователю
закрываем соединение с пользователю
убираем соединение с буфера '''
start = datetime.now()
request = client_socket.recv(1024)
client_socket.sendall('hello'.endoce())
selector.unregister(client_socket)
client_socket.close()
print(datetime.now() - start)
def event_loop():
while True:
events = selector.select()
for key, _ in events:
callback = key.data
callback(key.fileobj)
def run():
''' Запускаем сервер '''
server()
event_loop()
run()
我尝试通过浏览器和nc进行连接:
nc 35.223.69.89 800
但没有成功。我还试着改变这一行:
socket_server.bind(('0.0.0.0', 800))
关于:
socket_server.bind(('35.223.69.89', 800))
但是你犯了一个错误
File "dts.py", line 10, in server
socket_server.bind(('35.223.69.89', 800))
OSError: [Errno 99] Cannot assign requested address
可能在没有apache和类似解决方案的情况下启动服务器。我想知道aiohttp是如何启动的,没有wsgi如果你只是在谷歌云服务器上遇到问题,那可能是防火墙配置问题(即谷歌不允许你的连接通过)。