I have recently started with django. And I started doing a small project. I’ve been using celery with redis worker. And every to use celery and redis I have to run the celery and redis server and then django server. Which is a bit lengthy process.
I have two questions.
1. Am I doing the right thing by running the servers everytime or are there any other right method to this process?
2. If I’m in the right direction, is there any method to do this?
I tried circus.ini , but it did not work.
2
Answers
If you use UNIX system:
&
command.Disadvantage of this approach – redis and celery will work in the background even after a shutdown of django dev server. So you need to terminate these processes. See this unix se answer for examples how to do that.
So you can create 2 bash scripts
start.sh
(contains commands with&
) andcleanup.sh
(terminate processes) and run them respectively.For production see purpose #2
Building upon Yevhenii M.‘s answer, you can start a subshell command with a
trap
to kill all running processes in that subshell when you hit Ctrl+C:or as a more readable multiline command:
Another option is to use a Procfile manager, but that requires installing additional dependencies/programs. Something like foreman or one of it’s ports in other languages:
(Source: foreman’s README)
For this you create a
Procfile
(file in your project root) where you specify which commands to run:Then run
foreman start