--
Você recebeu essa mensagem por estar inscrito no grupo web2py-users-brazil.
Para enviar uma mensagem ao grupo, envie email a: web2py-us...@googlegroups.com
Para se desinscrever, envie email a: web2py-users-br...@googlegroups.com
Para mais opções, visite o site do grupo em: http://groups.google.com/group/web2py-users-brazil?hl=en
The operation of sending an email message can take up to several seconds because of the need to log into and communicate with a potentially remote SMTP server. To keep the user from having to wait for the send operation to complete, it is sometimes desirable to queue the email to be sent at a later time via a background task. As described in Chapter 4, this can be done by setting up a homemade task queue or using the web2py scheduler. Here we provide an example using a homemade task queue.
First, in a model file within our application, we set up a database model to store our email queue:
1. | db.define_table('queue', |
From a controller, we can then enqueue messages to be sent by:
1. | db.queue.insert(status='pending', |
Next, we need a background processing script that reads the queue and sends the emails:
1. | ## in file /app/private/mail_queue.py |
Finally, as described in Chapter 4, we need to run the mail_queue.py script as if it were inside a controller in our app:
1. | python web2py.py -S app -M -N -R applications/app/private/mail_queue.py |
where -S app tells web2py to run "mail_queue.py" as "app", -M tells web2py to execute models, and -N tells web2py not to run cron.
atualmente uso o queue via Python puro no Movu.ca
Os emails de notificação estão bem rápidos e sem problemas.
Estou para implementar uma versão do motor de notificações com o scheduler.
O sqlite está aguentando muito bem!
O sql3 foi otimizado para concorrência, mas de qualquer modo existe o lock. Porém o que ocorre é que muitos podem ler e escrever ao mesmo tempo (porém em registros diferentes)
O sqlite3 agora cria uns arquivos .shadow que são ocultos, é como um buffer temporário, por transaction, quando vc escreve na verdade tá operando neste arquivo e ai no commit ele tenta jogar isso pra dentro do banco, se estiver com lock ele tenta de novo depois. (mas tem uma inteligência extra ai para checar timestamp etc...)
http://movu.ca/demo - 100% sqlite, 2 bancos.
http://miaudota.com.br - sqlite
http://cursodeputhon.com.br (tem o campus onde os alunos interagem) - sqlite
rodo sqlite em mais duas apps de intranet em um cliente.
O sqlite tem me surpreendido por ainda não ter dado nenhum problema com concorrência.
Mas claro que indico o uso do Postgres, mas o sqlite não é tão ruim assim. :)
O problema do SQLite não é a concorrência de usuários, mas de processos. Daí vem o lock. Quando falamos em app web, só há um processo atualizando. Então tudo fica tranquilo.