> Den 18/11/2014 kl. 16.50 skrev Arun Marathe <[email protected]>:
> 
> For a somewhat obscure reason, I need to stop the testserver from within a 
> test case. Any ideas?
> I would like a programmatic solution if possible. Finding a process and 
> killing it (ps -ef., then grep,
> then kill) is bit of a hack, and may end up killing unintended processes.

By "test server" I assume you mean the built-in Django development server.

The development server is running in a completely different process from your 
test case, so your options are somewhat limited. The development server does a 
really good job of staying alive, so you can't raise KeyboardInterrupt or 
sys.exit() because the development server will simply restart.

I would probably create a special view that you van call from your test case, 
e.g. GET http://localhost:8000/killme, which finds the process ID of itself 
(the development server) and signals it to stop. Something like this:


class KillMe(View):
    def get(request):
        import os
        import signal
        pid = os.getpid()
        os.kill(pid, signal.SIGINT)


Depending on your needs, you might need to let your test case wait until the 
development server process has actually terminated.

Erik

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/9D100E03-0CD0-4BFB-B2B5-E6CE5B7EE57F%40cederstrand.dk.
For more options, visit https://groups.google.com/d/optout.

Reply via email to