>  기사  >  백엔드 개발  >  Python에서 Tornado 웹사이트 개발의 비동기식 및 코루틴화 소개

Python에서 Tornado 웹사이트 개발의 비동기식 및 코루틴화 소개

不言
不言앞으로
2018-10-19 17:21:462452검색
이 글은 Python을 이용한 Tornado 웹사이트의 비동기 및 코루틴 개발에 대해 소개합니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

Tornado에는 동기 처리 프로세스를 변경하는 두 가지 방법이 있습니다.

비동기: 기본 동기화 메커니즘을 비동기 메커니즘으로 변경하려면 RequestHandler 처리 기능에 @tornado.web.asynchronous 데코레이터를 사용하세요. 이 방법은 만료되었습니다.

코루틴화: RequestHandler 처리 함수에 @tornado.gen.coroutine 데코레이터를 사용하여 기본 동기화 메커니즘을 코루틴 메커니즘으로 변경합니다.

1. 비동기식

이 메서드는 만료되었으므로 대신 @tornado.gen.coroutine을 사용하세요.

2. 코루틴화

Tornado 코루틴은 동기 처리와 비동기 처리의 장점을 결합하여 코드를 명확하고 이해하기 쉽게 만들고 대규모 클라이언트의 높은 동시 요청에 적응할 수 있습니다.

코드:

import tornado.web
import tornado.httpclient
from tornado.web import Application
import tornado.ioloop
class MainHandler(tornado.web.RequestHandler):


    @tornado.gen.coroutine
    def get(self):
        http=tornado.httpclient.AsyncHTTPClient()
        response=yield http.fetch("http://www.baidu.com")
        self.write(response.body)

if __name__ == '__main__':
    app=Application([
        ("/",MainHandler)
    ])
    app.listen("8888")
    tornado.ioloop.IOLoop.current().start()

코루틴화의 핵심 기술 포인트는 다음과 같습니다.

  • tornado.gen.coroutine을 사용하여 MainHandler의 get(), post() 및 기타 처리 기능을 장식합니다.

  • 이 예제에서는 AsyncHTTPClient와 같이 시간이 많이 걸리는 작업을 처리하려면 비동기 개체를 사용하세요.

  • Yield 키워드를 호출하여 비동기 객체의 처리 결과를 가져옵니다.

위 내용은 Python에서 Tornado 웹사이트 개발의 비동기식 및 코루틴화 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제