I noticed when we send an email of invoice it gets in the queue. Queue is executed every 7 mins .
However this does not happens with high priority mails like password reset or welcome mail .
I am interested in lowering the time for email queue execution from 7 mins to maybe 2 mins or rather eliminate the queue altogether. Which are the best options and some thoughts on implementing it ?
1 Like
@srajelli Normally emails from Frappe are sent as ‘bulk emails’ (sales orders etc), whereas password reset emails etc are sent on priority.
By maintaining a email queue we balance the server load etc. Hence the delay. Any particular reason why you wish to eliminate the email queue ?
I just want the email to be sent on priority or at least reduce the 7 mins queue time
@anand maybe you could suggest something
anand
July 14, 2016, 7:34am
5
@srajelli Fixed in v7. High priority mails like welcome and password reset get sent immediately now.
Thanks I noticed it , But can we do the same for regular emails (Sales Invoice, PO etc) ?
3 Likes
Hi @srajelli , any news for this?
Thanks
Nope it’s still the same for other documents
I have the same problem and searching for solution
You can write a custom script and add a custom button to forms to send high priority emails. I haven’t done this but I am sure it is possible
dwork
January 16, 2018, 12:55am
11
If “Send Immediately” was an option in the email form, it would satisfy my needs as well. I’m not sure how one would go about adding this or setting the email priority to bypass the scheduler.
1 Like
Hi all,
I know this is old, but this seems to be an open topic. I did a bit of digging and found that in ./config/supervisor.conf there is a definition of the workers, containing
[program:frappe-bench-frappe-short-worker]
command=/usr/local/bin/bench worker --queue short
priority=4
autostart=true
autorestart=true
stdout_logfile=/home/frappe/frappe-bench/logs/worker.log
stderr_logfile=/home/frappe/frappe-bench/logs/worker.error.log
user=frappe
stopwaitsecs=360
directory=/home/frappe/frappe-bench
killasgroup=true
numprocs=1
process_name=%(program_name)s-%(process_num)d
As far as I understand, the short worker is used to send mails. stopwaitsecs
is the duration, how long this will be kept alive, so unfortunately, this does not impact the send interval…
Then, I found that in hooks.py
, the email queue is flushed with the all trigger (~every 4 minutes according to https://frappe.io/docs/user/en/tutorial/task-runner ). So, I have added to my custom app in the hooks.py
the following block:
scheduler_events = {
"cron": {
"* * * * *": [
"frappe.email.queue.flush"
]
}
}
This seems to run the queue every minute…
8 Likes
Hi, I am also looking for the same solution to reduce the mailing interval. Can you please confirm the same method is applicable in v11.1.18?
I am from a non-tech background. How can I achieve the same?
Kindly help.
Ashin
Yes it will work for v11.x
Alaa
May 21, 2021, 2:27pm
16
lasalesi:
Hi all,
I know this is old, but this seems to be an open topic. I did a bit of digging and found that in ./config/supervisor.conf there is a definition of the workers, containing
[program:frappe-bench-frappe-short-worker]
command=/usr/local/bin/bench worker --queue short
priority=4
autostart=true
autorestart=true
stdout_logfile=/home/frappe/frappe-bench/logs/worker.log
stderr_logfile=/home/frappe/frappe-bench/logs/worker.error.log
user=frappe
stopwaitsecs=360
directory=/home/frappe/frappe-bench
killasgroup=true
numprocs=1
process_name=%(program_name)s-%(process_num)d
As far as I understand, the short worker is used to send mails. stopwaitsecs
is the duration, how long this will be kept alive, so unfortunately, this does not impact the send interval…
Then, I found that in hooks.py
, the email queue is flushed with the all trigger (~every 4 minutes according to https://frappe.io/docs/user/en/tutorial/task-runner ). So, I have added to my custom app in the hooks.py
the following block:
scheduler_events = {
"cron": {
"* * * * *": [
"frappe.email.queue.flush"
]
}
}
This seems to run the queue every minute…
Hi,
Actually, this doesn’t work for me. I am using V13. I have added the required lines on my custom app hooks.py
Is there anything else I need to do?
This should also work in V13… Alternatively, instead of using the hooks, you could directly put this into your crontab
* * * * * cd /home/frappe/frappe-bench && bench execute frappe.email.queue.flush
2 Likes
Alaa
June 3, 2021, 1:56pm
18
This works perfectly. Thanks for your reply.
lasalesi:
This should also work in V13… Alternatively, instead of using the hooks, you could directly put this into your crontab
* * * * * cd /home/frappe/frappe-bench && bench execute frappe.email.queue.flush
Can you please explain how to do this? Thanks.
To add this to you (ideally root) crontab, do (this applies for Debain/ubuntu)
$ sudo crontab -e
then enter the above line at the end of the file and hit CTRL-X, Y, ENTER (in case of nano as your editor of choice).