Я использую простой python сервер из дома. Сценарий называется server.py
#server.py
from http.server import BaseHTTPRequestHandler, HTTPServer, CGIHTTPRequestHandler
import socketserver
class MyHandler(BaseHTTPRequestHandler):
def do_GET(self):
print('GET!',self.headers)
def do_POST(self):
print('POST!',self.headers)
#this is for ending requests which last too long...like from webcrawling bots n such...
class ForkingHTTPServer(socketserver.ForkingMixIn, HTTPServer):
def finish_request(self, request, client_address):
request.settimeout(60)
HTTPServer.finish_request(self, request, client_address)
#------------------------------------------------------------------------------
#==============================================================================
###############################################################################
def main():
try:
print('Server started!')
srvr = ForkingHTTPServer(('', 8080),MyHandler)
srvr.serve_forever()
except KeyboardInterrupt:
print('^C received, shutting down server')
srvr.socket.close()
#------------------------------------------------------------------------------
#==============================================================================
###############################################################################
if __name__ == '__main__':
main()
Когда я запускаю этот сервер из терминала, он распечатывает заголовки запросов GET и POST, сделанных к нему.
Когда я подключаюсь к этому серверу через браузер на моем ноутбуке, например Chrome или Firefox et c., я могу видеть в Терминале серверного компьютера, что я запрашивал данные из этого браузера (он распечатывает заголовки). Никаких проблем, все как и ожидалось.
ОДНАКО ... Я намереваюсь использовать этот сервер вместе с автономным приложением python, и поэтому я хотел бы использовать модуль запросов python для связи с этот сервер.
Проблема в том, что ... когда я использую python запросов ... почти ничего не происходит? Как и в ничего не печатается в терминале. Я не знаю, что случилось? Вот сценарий python запросов, который я использую ...
#test_request.py
import requests
print('testing requests...')
s=requests.Session()
s.headers.update({'some_kinda_special_data':'and_here_it_IS'})
r = s.post('http://www.<myspecialreservedwebsiteforthis>.com/')
r_data = vars(r)
for thing in r_data:
print(thing, r_data[thing])
Я планирую использовать запросы POST из этого готового приложения, чтобы иметь возможность получать данные с сервера. Я работаю на основе того, что я включаю в заголовки (а также запускаю сценарии py на сервере перед отправкой ответа). Я полагаю, что таким способом было бы проще создать собственную систему безопасности (разные топи c, но идея в том, что сервер будет отклонять любые входящие запросы, в которых где-то в заголовках нет специального кода). Но когда я запускаю этот скрипт test_request.py, в серверном терминале НИЧЕГО НЕ ПЕЧАТАЕТСЯ, как при подключении через браузер ... он даже не отображается. ПОЧЕМУ?
Кроме того, примерно через 2 минуты ожидания (что также необходимо выяснить, как исправить ...), я получаю НЕКОТОРЫЕ МАТЕРИАЛЫ в терминале test_request при запуске test_request.py, включая this: '
Вы видите это сообщение, потому что этот сайт требует готовить CSRF ie при отправке форм. Тем не менее, даже если терминал test_request.py в конечном итоге печатает что-то, серверный терминал по-прежнему ничего не печатает ...
ТАКЖЕ: сервер работает на отдельном компьютере, отличном от того, который делает python запросы к нему (или запросы браузера к нему).
Понимание того, почему python запросы не являются «Появление» в Терминале сервера, а также то, почему python запросов зависает на 2+ минуты КАЖДЫЙ РАЗ, когда он пытается получить данные с этого сервера, будет с благодарностью!