Django: start a process in a background thread?

django, multithreading

Solution

I'm not sure you need a thread for that. It sounds like you just want to spawn off a process, so look into the `subprocess` module.

Problem

I'm trying to work out how to run a process in a background thread in Django. I'm new to both Django and threads, so please bear with me if I'm using the terminology wrong. Here's the code I have. Basically I'd like `start_processing` to begin as soon as the `success` function is triggered. However `start_processing` is the kind of function that could easily take a few minutes or fail (it's dependent on an external service over which I have no control), and I don't want the user to have to wait for it to complete successfully before the view is rendered. ('Success' as far as they are concerned isn't dependent on the result of `start_processing`; I'm the only person who needs to worry if it fails.) ``` def success(request, filepath): start_processing(filepath) return render_to_response('success.html', context_instance = RequestContext(request)) ``` From the Googling I've done, most people suggest that background threads aren't used in Django, and instead a cron job is more suitable. But I would quite like `start_processing` to begin as soon as the user gets to the success function, rather than waiting until the cron job runs. Is there a way to do this?

Original source

Related problems