[PYTHON] 비 블로킹 HTTP POST 요청 보내기
PYTHON비 블로킹 HTTP POST 요청 보내기
나는 php와 python으로 두 개의 웹 사이트를 가지고있다. 사용자가 서버에 요청을 보내면 원격 서버에 HTTP POST 요청을 보내려면 php / python이 필요합니다. 원격 서버의 응답을 기다리지 않고 즉시 응답하고 싶습니다.
사용자에게 응답을 보낸 후 PHP / Python 스크립트를 계속 실행할 수 있습니까? 이 경우 먼저 사용자에게 회신하고 HTTP POST 요청을 원격 서버로 보냅니다.
그것은 응답을 전혀 처리하지 않고 PHP / 파이썬에서 비 차단 HTTP 클라이언트를 만들 수 있습니까?
php와 python에서 동일한 논리를 갖는 솔루션이 나에게 더 좋습니다.
감사
해결법
-
==============================
1.PHP에서는이 요청을 전송하여 연결을 닫을 수 있습니다 (HTTP와 관련되어 있으며 사용하기에 적합한 구문을 모르지만 python에서도 작동 함).
PHP에서는이 요청을 전송하여 연결을 닫을 수 있습니다 (HTTP와 관련되어 있으며 사용하기에 적합한 구문을 모르지만 python에서도 작동 함).
// Send the response to the client header('Connection: Close'); // Do the background job: just don't output anything!
부록 : "Context-Length"를 설정해야한다는 것을 잊어 버렸습니다. 또한 팁과 실제 테스트 사례에 대해이 설명을 확인하십시오.
<?php ob_end_clean(); header('Connection: close'); ob_start(); echo 'Your stuff goes here...'; header('Content-Length: ' . ob_get_length()); ob_end_flush(); flush(); // Now we are in background mode sleep(10); echo 'This text should not be visible'; ?>
-
==============================
2.다른 서버에 POST를 처리하는 다른 프로세스를 생성 할 수 있습니다. PHP에서는 프로세스를 생성하고 "연결 해제"하므로 응답을 기다리지 않습니다.
다른 서버에 POST를 처리하는 다른 프로세스를 생성 할 수 있습니다. PHP에서는 프로세스를 생성하고 "연결 해제"하므로 응답을 기다리지 않습니다.
exec("nohup /path/to/script/post_content.php > /dev/null 2>&1 &");
그러면 게시물을 컬링 할 수 있습니다. 매개 변수를 PHP 스크립트에 전달하려면 getopt () 함수를 사용하여 매개 변수를 읽을 수 있습니다. 파이썬에서 비슷한 것을 할 것인지 확신 할 수 없습니다.
-
==============================
3.당신이해야 할 일은 PHP 스크립트가 서버 호출을하는 다른 스크립트를 실행 한 다음 사용자에게 요청을 보내는 것입니다.
당신이해야 할 일은 PHP 스크립트가 서버 호출을하는 다른 스크립트를 실행 한 다음 사용자에게 요청을 보내는 것입니다.
-
==============================
4.fsockopen을 사용해야합니다. 그리고 결과를 듣지 마라.
fsockopen을 사용해야합니다. 그리고 결과를 듣지 마라.
<?php $fp = fsockopen('example.com', 80); $vars = array( 'hello' => 'world' ); $content = http_build_query($vars); fwrite($fp, "POST /reposter.php HTTP/1.1\r\n"); fwrite($fp, "Host: example.com\r\n"); fwrite($fp, "Content-Type: application/x-www-form-urlencoded\r\n"); fwrite($fp, "Content-Length: ".strlen($content)."\r\n"); fwrite($fp, "Connection: close\r\n"); fwrite($fp, "\r\n"); fwrite($fp, $content);
-
==============================
5.중간 남자를 배치해야합니다. 따라서 자신의 서버에서 다음과 같은 이점을 얻을 수 있습니다.
중간 남자를 배치해야합니다. 따라서 자신의 서버에서 다음과 같은 이점을 얻을 수 있습니다.
-
==============================
6.물 담뱃 대는 당신의 문제를 해결하도록 설계되었습니다.
물 담뱃 대는 당신의 문제를 해결하도록 설계되었습니다.
from https://stackoverflow.com/questions/1555517/sending-a-non-blocking-http-post-request by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] cProfile에서 의미있는 결과를 얻는 파이썬 (0) | 2018.11.25 |
---|---|
[PYTHON] 목록에서 고유 한 값을 계산하려면 어떻게합니까? (0) | 2018.11.25 |
[PYTHON] 파이썬에서 Matlab의 'fread'에 해당하는 것은 무엇입니까? (0) | 2018.11.25 |
[PYTHON] 파이썬에서 소수 자릿수 지정하기 (0) | 2018.11.25 |
[PYTHON] 팬더 : 두 개의 데이터 프레임을 요소로 나누는 것 (0) | 2018.11.25 |