3👍
Option 1 is probably best. This is in effect making it a singleton, which is used wherever you need it.
In terms of your follow-up questions, everything at module level is executed when that module is first imported in a process. When subsequent modules import the first module, it is not executed again; they just get additional references to the same object. So in this case there would be a single instantiation of your queue. Objects remain in memory for as long as there are references to them; since this object is instantiated at module level and assigned to a module-level variable, the instance will persist in memory for the duration of the process.
There are quite a few questions here about how processes work in Django; suffice to say that although this depends to some extent on the server that is running it, almost all ways of running Django consist of multiple processes each of which persist for many requests. Again, in your case each server process would have its own single reference to the queue object.