Почему Python запрос не отображается в Python распечатке http-сервера? - PullRequest
0 голосов
/ 26 февраля 2020

Я использую простой 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+ минуты КАЖДЫЙ РАЗ, когда он пытается получить данные с этого сервера, будет с благодарностью!

...