#python #django #sockets #asyncsocket #webhooks
#python #django #сокеты #asyncsocket #webhooks
Вопрос:
Я пытаюсь написать модульный тест для обратного вызова webhooks в django. Мое приложение настроено так, что, когда я запускаю немного кода, оно отправляет POST-запрос на выбранный мной URL-адрес — это функциональность, которую я пытаюсь протестировать.
Я хотел бы настроить сокет, который прослушивает этот запрос и сообщает мне, был ли он отправлен или нет. Я предполагаю, что это выглядит примерно так:
import socket
def webHooksTest(self):
targetURL = 'http://127.0.0.1:8000'
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind('localhost', 8000)
s.listen(1)
s.accept()
# Code that triggers POST request goes here
self.assertNotEqual(s.recvd(), None, "WebHooks URL did not receive anything")
Как есть, это вообще не сработает, потому что программа зависнет на строке s.accept() и никогда не отправит запрос.
Я совершенно новичок в асинхронном программировании и мог бы воспользоваться некоторыми советами. Изучив документы Python, я совершенно уверен, что один модуль сокета не может этого сделать — мне нужна какая-то асинхронная магия.
Ответ №1:
Библиотека сокетов не может сделать это в одиночку. Взгляните на python twisted. Это должно вам помочь. Хотя я еще не пробовал это с django.