2011-12-14 12 views
3

Djangoアプリケーションのテストをいくつかのスレッド(おそらく何十という)で並行して実行したいと思います。これは、私のアプリがリモートリクエストを待っている時間のほとんどを費やしているからです。テストを並行して実行すると、お互いを遅くすることなく同時に作業することができます。スイート全体がきれいになります早く。多くの別々のスレッドでDjangoアプリケーションをテストする

...テストは現在、シングルスレッドのDjangoのrunserverで実行されています。したがって、数十の要求を同時に処理することはできません。私が持っている

(私はテストを呼び出すためにdjango_noseとDjangoの./manage.py testを使用しています。)

ひとつのアイデアは、代わりにdevserverを使用することです。問題は、./manage.py testを呼び出すときに自動的に使用されるかどうかです。

もう1つの質問は、ランダムにむしろdevserverに出くわしました。より良い競争相手があるかどうかわかりません。それは?

+0

http://nedbatchelder.com/blog/201103/quick_and_dirty_multithreaded_django_dev_server.html mutliはそれが – dm03514

答えて

-1

私は最近、djangoの非同期タスクキューであるdjango-celeryについて掘り下げ始めました。これにより、タスクを非同期で実行するようにキューイングできるため、応答を待つ必要はありません。インストールと起動が簡単で、テストスイートだけでなく、アプリケーションが非同期キューイングを利用できるようになります。

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

+0

セロリは素晴らしいです非常に簡単ですが、私はそれはだか表示されていないスレッド作ります私の問題の解決策。 –

+0

あなたのアプリケーションが独自のタスクとして行う各リクエストを提出すれば、それらは非同期で実行され、次のアクションを実行する前に各応答を待つ必要はないと私は考えていました。 – cnowacek

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

関連する問題