2012-04-25 1 views
2

내가 응용 프로그램을 위해 내가해야 할 한 가지를 백엔드 API를 구축 플라스크를 사용하고있다 :플라스크에서이 비동기 작업을 수행하기 위해 사용할 라이브러리는 무엇입니까?

1. get the content the user submited 
2. send a twitter with that content 
3. save the content to my DB and return the id of the new item 

이제 문제는 총 요청 시간을 느리게 그래서 2 단계가 너무 오랜 시간이 걸립니다 .

더 구체적으로, 2 단계는 다음과 같습니다 twitter.send(content)

가 어떻게 2 단계 비동기를 만들 수 있을까? 추신 : 2 단계가 성공했는지 여부를 알 필요가 없습니다.

답변

4

플라스크 셀러리 pacakge.http : //pypi.python.org/pypi/Flask-Celery가 있습니다. http://ask.github.com/celery/getting-started/introduction.

셀로리에게 비동기로 수행 할 작업을 알릴 수 있습니다.

  1. 는 컨텐츠 사용자는
  2. 전송 셀러리는 즉시이 DB 및 새 항목의 ID를 반환 할 내용 저장
  3. 할 수있는 트윗을 전송해야하는 메시지를 제출받을.

단계 2 coudl이 방법을 필요로하고 사용자가 알지 못할 한 오래 걸립니다.

UPDATE :
셀러리 3.0 이후, flask-celery이 필요하지 않습니다, 당신은 직접 셀러리를 사용할 수 있습니다 pip install -U Celery

4

나는 셀러리와 다른 분산 작업 프레임 워크가 너무 본인 또는 내 같은 간단한 작업을 위해 헤비급 찾을 수있는 비동기 적으로 전자 메일을 보냅니다.

작업자 프로세스 풀을 사용하여 전자 메일을 처리했습니다. 이 방법은 Asynchronous method call in Python? 질문에 대한 this answer에 설명되어 있습니다. 이 질문에 대한 대답은 Pool을 사용하지만 데코레이터가없는 솔루션을 제공하므로 더 간단합니다.

관련 문제