2011-12-14 75 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