Python – sending a non-blocking HTTP POST request

nonblockingPHPpython

I have a two websites in php and python.
When a user sends a request to the server I need php/python to send an HTTP POST request to a remote server. I want to reply to the user immediately without waiting for a response from the remote server.

Is it possible to continue running a php/python script after sending a response to the user. In that case I'll first reply to the user and only then send the HTTP POST request to the remote server.

Is it possible to create a non-blocking HTTP client in php/python without handling the response at all?

A solution that will have the same logic in php and python is preferable for me.

Thanks

Best Answer

In PHP you can close the connection by sending this request (this is HTTP related and works also in python, although I don't know the proper syntax to use):

// Send the response to the client
header('Connection: Close');
// Do the background job: just don't output anything!

Addendum: I forgot to mention you probably have to set the "Context-Length". Also, check out this comment for tips and a real test case.

Example:

<?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';    
?>
Related Topic