I think there is a little bit of confusion in this thread,a s we keep
talk about django and the deamon process and ignoring the frontend.
So to clarify; there we are talking about a system with at least 3
execution environments:
1 The Browser2 Django backend processes3 The backend daemon/cli
-process.
django-channel provides a mechanism which (amongst other uses) can get
near-realtime updates from a django environment to the web browser, but
if you don't need this you can just store all your status data in the
data base . Then when the browser fetches a views it will have the most
recent data in the database.
You still however need to communicate between the backend process and
the rest of the django environment, the simplest way as Ryan suggesting
is tobring this inside the django environment by implementing it as a
management command, from there you have access to the python end of the
channels api to send messages to the browsers, or the model objects to
save to the database. Management commands can be arbitrarily complex,
so that not a problem in itself.
I have a similar system in development and there we do run the backend
daemon outside of the dajngo environment, but that makes database
access hard as you need a separate copy of the database models, or to
use raw SQL. In our system we still have a django management command
though which has the responsibility of pumping/handling messages from
the deamon to the intended destination.
If you want to keep your backend separate l I can see two reasonable
paths:  1. Use a custom set of django views to provide a API your
backend connects to over localhost/http to send the it message updates. 
2. A django management command as a API interface message handler,
which connects to the backend over one of many message channels out
there. (ie. zmq, redis, unix-sockets, etc)
Hope this helps a little bit.
On Sun, 2018-05-27 at 01:01 -0700, Sourabh Jaiswal wrote:
> HI Ryan,
> The back-end script in this case is not only doing telnet. Its
> getting data from multiple network elements using telnet and multi-
> threading. There are multiple threads started when I start the
> backend script which takes monitoring data from diff-diff network
> elements at the same time. The communication between the threads is
> happening using a python Sockets. A TCP server is responsible to pass
> the messages between threads. So I have to have this background
> program run to collect data.
> 
> The control from django I want is, to be able to start multiple
> instance of this whole back-end package when user clicks on such
> cluster in django front end. Passing management IP and other relevant
> information from django DB. and after starting particular instance
> django should be able to control it.
> 
> What I found out from recent googling and stuff is. I need to write
> some APIs in back-end program and as Andrew suggested it needs to be
> written in such a way that it can be polled via django.
> So where to start in this regard? can you please guide me for that.
> 
> Thanks in advance!
> 
> Regards,
> Jaiswal.
> 
> On Saturday, May 26, 2018 at 8:15:28 PM UTC+5:30, Ryan Nowakowski
> wrote:
> > Another idea: create a Django management command that does the
> > telnet stuff and just run that periodically via Cron. You can
> > always move to channels or celery later.
> > 
> > On May 26, 2018 9:33:16 AM CDT, Ryan Nowakowski <tub...@fattuba.com
> > > wrote:
> > > In addition to websockets, channels can be used to run background
> > > tasks that could take a long time for example a telnet
> > > connection. You can Google Django channels background tasks.
> > > 
> > > 
> > > 
> > > An alternative to channels for background tasks is celery. 
> > > 
> > > On May 26, 2018 5:03:51 AM CDT, Andrew Godwin <and...@aeracode.or
> > > g> wrote:
> > > > Hi Jaiswal,
> > > > I'm afraid that I can't give detailed help about what your best
> > > > options are or walk you through how to do it - that's something
> > > > you'll have to research and decide on yourself. Channels allows
> > > > you to do low-latency communictation between Django back-ends
> > > > and JavaScript, but anything you can do with it can also be
> > > > done slower using a polling API connection.
> > > > 
> > > > My recommendation would be to start simple - doing it using an
> > > > API that you poll every few seconds - and then once you have
> > > > that figured out, look at how you could improve it using
> > > > WebSockets and channels.
> > > > 
> > > > Andrew
> > > > On Sat, May 26, 2018 at 8:38 AM Sourabh Jaiswal <sourabhj...@gm
> > > > ail.com> wrote:
> > > > > Hi,
> > > > > 
> > > > > I am writing a python based application(CLI Back End) which
> > > > > does telnet to some network components and gets some data. It
> > > > > saves the data in sqlite db.
> > > > > 
> > > > > For this application I am writing Django based frond end.
> > > > > Which will start the CLI app and monitor it. For
> > > > > communication between the CLI App and django I am not able to
> > > > > decide what to use. I read somewhere on net that django
> > > > > channels can be used in this problem.
> > > > > 
> > > > > I have no idea about what django channel is and what it does.
> > > > > Can some one please help me in this I need to come up with a
> > > > > tool for this CLI and django communication ASAP.
> > > > > 
> > > > > 
> > > > > Thanks in advance!
> > > > > Regards, Jaiswal.
> > > > > 
> > > > > 
> > > > > 
> > > > > 

-- 
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 django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/1527411811.5443.61.camel%40gammascience.co.uk.
For more options, visit https://groups.google.com/d/optout.

Reply via email to