[DJANGO] Non-blocking operations em Django

4 views
Skip to first unread message

Marc Jr

unread,
Nov 6, 2012, 7:57:16 PM11/6/12
to pug...@googlegroups.com
Comecei a estudar Django hà uma semana depois de ter dado uma rodada básica no Flask e ter considerado bastante o uso de outras linguagens com Sinatra ou Node.JS
No fim vi que Django é de toda forma a melhor opção pra o projeto didatico que desenhei aqui.

Agora no meio dos meus estudos uma questão me veio à cabeça, É possivel implementar non-blocking operations ao estilo Node.JS em Django sem a necessidade de importa librarias de terceiros?

Abraços

Fernando

unread,
Nov 6, 2012, 10:41:06 PM11/6/12
to pug...@googlegroups.com
Sim, mas deve ser bem chato.

Mas porque você precisa de algo não bloqueante?

Uma coisa que você pode fazer é rodar um outro processo utilizando o
gevent ou tornado para as operações que precisem ser assíncronas.

[]s

2012/11/6 Marc Jr <marcon...@gmail.com>:
> --
> Você está recebendo esta mensagem porque se inscreveu no grupo "pug-pe" dos
> Grupos do Google.
> Para postar neste grupo, envie um e-mail para pug...@googlegroups.com.
> Para cancelar a inscrição nesse grupo, envie um e-mail para
> pug-pe+un...@googlegroups.com.
> Para ver esta discussão na web, acesse
> https://groups.google.com/d/msg/pug-pe/-/YOtmqg84tZUJ.
> Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
>
>



--
http://about.me/fernandogrd

Luciano Rodrigues da Silva

unread,
Nov 7, 2012, 8:55:48 AM11/7/12
to Comunidade_Python
Bem, eu não sou especialista em Django e nem em outro web framework, mas na maioria das vezes não consigo ver a limitação que vc vai ter. Veja, vamos dizer que vc precisa retornar uma quantidade absurda de registros, isso com certeza seria uma operação demorada e que iria bloquear o server. O que eu faria nesse caso era construir o serviço como uma API REST e colocar lá um contador que dissesse quantos registros no total e minha posição atual nos registros, tipo 1-100, 101-200, etc.

Talvez se vc disser oq quer fazer exatamente, a gente tenha como dar um pitaco melhor.


2012/11/7 Fernando <ferna...@gmail.com>



--
Até,

Luciano

<quote>
"Na prática, a teoria é outra!"
</quote>

:wq!

Gileno Alves

unread,
Nov 7, 2012, 11:09:02 AM11/7/12
to pug...@googlegroups.com
Sempre existe a possibilidade de fazer as coisas em background, celery ta ai para isso, ou até mesmo uma simples thread aberta já funciona em muitos casos, precisamos saber o que você quer fazer ai fica mais fácil ajudar.

2012/11/7 Luciano Rodrigues da Silva <lucro...@gmail.com>



--
Gileno Filho, Web Developer

Luciano Rodrigues da Silva

unread,
Nov 7, 2012, 12:34:52 PM11/7/12
to Comunidade_Python
Pois é, inclusive, na outra Thread eu levantei a bola de usar custom commands junto o agendador de tarefas do windows, que tbm poderia ser o cron no linux. Depende muito do que se quer fazer.


2012/11/7 Gileno Alves <gasc...@gmail.com>

Marc Jr

unread,
Nov 7, 2012, 12:39:27 PM11/7/12
to pug...@googlegroups.com
Eu to "portando" uma libraria minha do C++(com varios tipos para calculos de precisao arbitraria) para python e to estudando Django pra desenvolver a interface web para a api que está sendo portada.

Meu design ja mudou três vezes antes de começar a implementar:
  1. Usar python para abrir um novo thread para cada calculo e mostrar uma barra de loading na tela. Que no meu caso nao seria devido a memoria usado por certos calculos onde um espaço de memória independente seria necessario o que me levou ao segundo design...
  2. Usar python para fazer uma chamada de sistema e abrir um PID para cada calculo. Na verdade continua uma boa idéia e envolveria menos codigo e uma interface mais limpa sem preocupação com thread safety.
  3. Usar Node.JS E fazer essas non-blocking o grande problema é que quero me limitar 100% à uma so linguagem. :S
  4. (E no momento) Usar non-blocking operations em python para cada request de calculo e mostrar a barra de de loading para o usuario assim como dar a opção de iniciar outros calculos. (Nao seria tao complicado pra implementar isso usando python ou C-bindings mas seria refazer a roda.
Conselhos são bem vindos.



2012/11/7 Gileno Alves <gasc...@gmail.com>

Marc Jr

unread,
Nov 7, 2012, 12:59:45 PM11/7/12
to pug...@googlegroups.com
To dando uma olhada no celery como aconselhou Gileno...


2012/11/7 Marc Jr <marcon...@gmail.com>

Fernando

unread,
Nov 7, 2012, 2:02:28 PM11/7/12
to pug...@googlegroups.com
Talvez esse cara possa te ajudar, ele implementa algumas coisas em
cima do celery.

http://policystat.github.com/jobtastic/

[]s
Fernando Rocha

2012/11/7 Marc Jr <marcon...@gmail.com>:
http://about.me/fernandogrd

Marc Jr

unread,
Nov 8, 2012, 2:07:55 PM11/8/12
to pug...@googlegroups.com
Brigado Fernando,

Estou testando esse Jobtastic.
Fiquei ontem brincado com o celery, embora muito mais verbose do que eu esperava, é exatamente o que procuro.

Abraços


2012/11/7 Fernando <ferna...@gmail.com>
Reply all
Reply to author
Forward
0 new messages