66
p = subprocess.Popen([sys.executable, '/path/to/script.py'],
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
That will start the subprocess in background. Your script will keep running normally.
Read the documentation here.
6
Running this through a message queue is definitely the way to go if you’re thinking about long-term scaling. Send a message to the queue who’s running constantly in the background, and write job handlers to deal with the different sorts of messages.
Since you’re using Django, I think Beanstalkd is a pretty good fit. Here’s a pretty nice tutorial on the subject. The first comment in that article also has some good tips.
Personally I’ve rolled with a custom in-memory queue server written in Erlang, with Python-bindings written in C. But redis looks like it might work out as a great contender for future queuing/messaging-needs. Hope this helps!
- [Django]-Get objects from a many to many field
- [Django]-CSRF verification failed. Request aborted. on django
- [Django]-Is it possible to decorate include(…) in django urls with login_required?
- [Django]-Django Rest Framework writable nested serializers
- [Django]-How do I use a dictionary to update fields in Django models?
- [Django]-How can I change the default Django date template format?
1
Although if you find that you want to start communicating a bunch of information between the subprocess and the parent, you may want to consider a thread, or RPC framework like Twisted.
But most likely those are too heavy for your application.
- [Django]-How to change ForeignKey display text in the Django Admin?
- [Django]-Remove and ignore all files that have an extension from a git repository
- [Django]-Why SlugField() in Django?