Блокирует ли python httplib.HTTPConnection? - PullRequest
3 голосов
/ 05 апреля 2010

Я не уверен, является ли следующий код блокирующей операцией в python:

import httplib
import urllib

def do_request(server, port, timeout, remote_url):
    conn = httplib.HTTPConnection(server, port, timeout=timeout)
    conn.request("POST", remote_url, urllib.urlencode(query_dictionary, True))
    conn.close()
    return True

do_request("http://www.example.org", 80, 30, "foo/bar")
print "hi!"

А если это так, как можно было бы создать неблокирующий асинхронный http-запрос в python?

Спасибо от noob питона.

1 Ответ

5 голосов
/ 05 апреля 2010

Если вы не пойдете на все, чтобы предотвратить это, IO всегда будет блокироваться.

Несмотря на то, что вы можете делать асинхронных запросов , вам придется сделать вашу программу дружественной к асинхронности. Async волшебным образом не делает ваш код неблокирующим . Было бы намного проще выполнить запрос в другом потоке или процессе, если вы не хотите блокировать основной цикл.

Если вы интересуетесь асинхронным сетевым программированием, вам следует изучить Twisted .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...