2011-12-14 111 views
3

我想在多個線程(可能是幾十個)中並行運行我的Django應用程序的測試。這是因爲我的應用程序花費了幾乎所有的時間來等待遠程請求,而且我認爲如果我並行運行測試,它們將同時工作而不會相互影響,整個套件將會非常漂亮很快。在很多單獨的線程中測試Django應用程序

但是...測試目前與Django的runserver,這是單線程運行。所以它不能同時提供數十個請求。

(我使用Django的./manage.py testdjango_nose調用測試。)

一個想法我是用devserver代替。問題是,它會在調用./manage.py test時自動使用嗎?

另一個問題是:我碰到了devserver,而且我不知道是否有任何競爭對手可能會更好。可以?

+0

http://nedbatchelder.com/blog/201103/quick_and_dirty_multithreaded_django_dev_server.html使輯陣線程這很簡單 – dm03514 2011-12-14 20:07:45

回答

-1

我最近開始鑽研django-celery,這是一個django的異步任務隊列。它允許您將任務排隊以異步運行,以便您不必等待響應。安裝起來很簡單,它可以讓你的應用程序使用異步排隊,而不僅僅是你的測試套件。

http://django-celery.readthedocs.org/en/latest/getting-started/index.html

+0

芹菜是真棒,但我不知道它是如何的一個解決我的問題。 – 2011-12-14 21:55:29

0

使用uWSGI

pip install uwsgi 

創建的.ini爲您的項目:

[uwsgi] 
# set the http port 
http = :8000 
# change to django project directory 
chdir = /var/www/myapp 
# add /var/www to the pythonpath, in this way we can use the project.app format 
pythonpath = /var/www 
# set the project settings name 
env = DJANGO_SETTINGS_MODULE=myapp.settings 
# load django 
module = django.core.handlers.wsgi:WSGIHandler() 

與內置的HTTP服務器

uwsgi --ini django.ini --async 10 

異步啓動它 - 號的線程

http://projects.unbit.it/uwsgi/wiki/Quickstart

http://projects.unbit.it/uwsgi/wiki/Doc095