이전의 포스팅에서 간랸한 예제샘플을 django에 간단하게 적용해보는 것을 다뤘다.
http://abipictures.tistory.com/895
그런데, 혹시나 비동기 태스크를 수행하면 어떻게 된다는건지.. 도통 감이 안오시는 분을 위해 테스트 결과를 한번 더 보여드리고자 한다.
테스트는 이렇다.
이전에 포스팅에서 views.py 소스코드를 아래와 같이 바꿨다..
from django.http import HttpResponse
from synapseTasks import tasks
def test_celery(request):
result2 = tasks.add.delay(1,5)
result3 = tasks.add.delay(2,5)
result4 = tasks.add.delay(3,5)
result5 = tasks.add.delay(4,5)
result = tasks.sleeptask.delay(0)
result6 = tasks.add.delay(5,5)
result6 = tasks.add.delay(6,5)
result6 = tasks.add.delay(7,5)
result6 = tasks.add.delay(8,5)
result6 = tasks.add.delay(9,5)
result6 = tasks.add.delay(10,5)
return HttpResponse("this is task test (id : %s)"%result.id)
뭐 별거 없다. add라는 함수를 몇번 실행하는데, 그 중간에 2초의 시간을 설정한 sleeptask함수를 사이에 끼워넣었다.
동기화.. 즉, 순차적으로 실행이 된다고 하면.. 6, 7, 8, 9,...(2초후) 0,.. 10, 11, 12, 13, 14, 15. 이렇게 출력될 것이다.
그렇지만, 비동기 태스크 큐라는 것은 위의 하나하나 태스크가 병렬, 비동기적으로 수행되기 때문에 아래와 같이 출력될 것이다.
[2013-06-05 09:51:22,021: INFO/MainProcess] consumer: Connected to amqp://guest@127.0.0.1:5672//.
[2013-06-05 09:51:24,643: INFO/MainProcess] Got task from broker: tasks.add[08badefb-3b89-4f81-aa6f-ec7426d1e88a]
[2013-06-05 09:51:24,647: INFO/MainProcess] Got task from broker: tasks.add[08d07d47-73bc-4ccd-b8ee-137afae8930a]
[2013-06-05 09:51:24,647: INFO/MainProcess] Got task from broker: tasks.add[c4230068-6663-459c-b72b-e7d97aad446c]
[2013-06-05 09:51:24,647: INFO/MainProcess] Got task from broker: tasks.add[a83ceca2-6d63-46ca-a9b7-59b59bd8ff02]
[2013-06-05 09:51:24,648: INFO/MainProcess] Got task from broker: tasks.sleeptask[39b18a5d-37c2-437a-864a-3cb9e73ec294]
[2013-06-05 09:51:24,648: INFO/MainProcess] Got task from broker: tasks.add[220908b7-0a59-41cc-8759-02b468c0e530]
[2013-06-05 09:51:24,648: INFO/MainProcess] Got task from broker: tasks.add[145aaba1-d174-420f-938b-63254ace591d]
[2013-06-05 09:51:24,648: INFO/MainProcess] Got task from broker: tasks.add[015462ac-dbb9-493d-801e-23b0b40239da]
[2013-06-05 09:51:24,648: INFO/MainProcess] Got task from broker: tasks.add[fe5526b0-dac0-44ac-af4a-f475e9fda08f]
[2013-06-05 09:51:24,649: INFO/MainProcess] Got task from broker: tasks.add[a821a90e-586e-4ae0-8d1f-6d5c495190c2]
[2013-06-05 09:51:24,649: INFO/MainProcess] Got task from broker: tasks.add[e37b20e7-02d3-41a2-9d72-97581542000f]
[2013-06-05 09:51:24,728: INFO/MainProcess] Task tasks.add[08badefb-3b89-4f81-aa6f-ec7426d1e88a] succeeded in 0.0842771530151s: 6
[2013-06-05 09:51:24,794: INFO/MainProcess] Task tasks.add[08d07d47-73bc-4ccd-b8ee-137afae8930a] succeeded in 0.145333051682s: 7
[2013-06-05 09:51:24,795: INFO/MainProcess] Task tasks.add[c4230068-6663-459c-b72b-e7d97aad446c] succeeded in 0.144882202148s: 8
[2013-06-05 09:51:24,795: INFO/MainProcess] Task tasks.add[a83ceca2-6d63-46ca-a9b7-59b59bd8ff02] succeeded in 0.142053127289s: 9
[2013-06-05 09:51:24,836: INFO/MainProcess] Task tasks.add[e37b20e7-02d3-41a2-9d72-97581542000f] succeeded in 0.108502864838s: 15
[2013-06-05 09:51:24,895: INFO/MainProcess] Task tasks.add[a821a90e-586e-4ae0-8d1f-6d5c495190c2] succeeded in 0.10031914711s: 14
[2013-06-05 09:51:24,895: INFO/MainProcess] Task tasks.add[015462ac-dbb9-493d-801e-23b0b40239da] succeeded in 0.10028886795s: 12
[2013-06-05 09:51:24,895: INFO/MainProcess] Task tasks.add[fe5526b0-dac0-44ac-af4a-f475e9fda08f] succeeded in 0.100656032562s: 13
[2013-06-05 09:51:24,936: INFO/MainProcess] Task tasks.add[145aaba1-d174-420f-938b-63254ace591d] succeeded in 0.100257873535s: 11
[2013-06-05 09:51:24,995: INFO/MainProcess] Task tasks.sleeptask[39b18a5d-37c2-437a-864a-3cb9e73ec294] succeeded in 0.0994789600372s: 0
[2013-06-05 09:51:24,995: INFO/MainProcess] Task tasks.add[220908b7-0a59-41cc-8759-02b468c0e530] succeeded in 0.100178003311s: 10
비동기 이기때문에.. 결과는 당연히 순차적으로 결과가 나오지 않고, 먼저 처리되는 것부터 출력된다.
'Web' 카테고리의 다른 글
css gradient 쉽게 디자인 하기 좋은 사이트 (0) | 2013.07.13 |
---|---|
Django + mysql 에서 한글저장.. (0) | 2013.06.23 |
django + celery + RabbitMQ 적용해서 비동기 task queuing하기. (1) | 2013.06.04 |
django 1.5를 KT ucloud 서버에 올리기 (0) | 2013.05.28 |
django 로그인 함수 (0) | 2013.05.23 |