def handle(self, *args: Any, **options: Any) -> None: if settings.EMAIL_DELIVERER_DISABLED: # Here doing a check and sleeping indefinitely on this setting might # not sound right. Actually we do this check to avoid running this # process on every server that might be in service to a realm. See # the comment in zproject/default_settings.py file about renaming this # setting. sleep_forever() while True: messages_to_deliver = ScheduledMessage.objects.filter( scheduled_timestamp__lte=timezone_now(), delivered=False) if messages_to_deliver: for message in messages_to_deliver: with transaction.atomic(): do_send_messages([self.construct_message(message)]) message.delivered = True Message.objects.bulk_update(messages_to_deliver, ['delivered']) cur_time = timezone_now() time_next_min = (cur_time + timedelta(minutes=1)).replace( second=0, microsecond=0) sleep_time = (time_next_min - cur_time).total_seconds() time.sleep(sleep_time)
def handle(self, *args: Any, **options: Any) -> None: if settings.EMAIL_DELIVERER_DISABLED: # Here doing a check and sleeping indefinitely on this setting might # not sound right. Actually we do this check to avoid running this # process on every server that might be in service to a realm. See # the comment in zproject/settings.py file about renaming this setting. sleep_forever() with lockfile("/tmp/zulip_scheduled_message_deliverer.lockfile"): while True: messages_to_deliver = ScheduledMessage.objects.filter( scheduled_timestamp__lte=timezone_now(), delivered=False) if messages_to_deliver: for message in messages_to_deliver: with transaction.atomic(): do_send_messages([self.construct_message(message)]) message.delivered = True message.save(update_fields=['delivered']) cur_time = timezone_now() time_next_min = (cur_time + timedelta(minutes=1)).replace(second=0, microsecond=0) sleep_time = (time_next_min - cur_time).total_seconds() time.sleep(sleep_time)
def handle(self, *args: Any, **options: Any) -> None: if settings.EMAIL_DELIVERER_DISABLED: sleep_forever() with lockfile("/tmp/zulip_email_deliver.lockfile"): while True: email_jobs_to_deliver = ScheduledEmail.objects.filter( scheduled_timestamp__lte=timezone_now()) if email_jobs_to_deliver: for job in email_jobs_to_deliver: # Reformat any jobs that used the old to_email # and to_user_ids argument formats. if 'to_email' in job: job['to_emails'] = [job['to_email']] del job['to_email'] if 'to_user_ids' in job: job['to_user_ids'] = [job['to_user_id']] del job['to_user_ids'] try: send_email(**loads(job.data)) job.delete() except EmailNotDeliveredException: logger.warning("%r not delivered" % (job, )) time.sleep(10) else: # Less load on the db during times of activity, # and more responsiveness when the load is low time.sleep(2)
def handle(self, *args: Any, **options: Any) -> None: if not settings.BILLING_PROCESSOR_ENABLED: sleep_forever() with lockfile("/tmp/zulip_billing_processor.lockfile"): while True: for processor in BillingProcessor.objects.exclude( state=BillingProcessor.STALLED): try: entry_processed = run_billing_processor_one_step(processor) except StripeConnectionError: time.sleep(5*60) # Less load on the db during times of activity # and more responsiveness when the load is low if entry_processed: time.sleep(10) else: time.sleep(2)
def handle(self, *args: Any, **options: Any) -> None: if settings.EMAIL_DELIVERER_DISABLED: sleep_forever() while True: email_jobs_to_deliver = ScheduledEmail.objects.filter( scheduled_timestamp__lte=timezone_now()) if email_jobs_to_deliver: for job in email_jobs_to_deliver: try: deliver_scheduled_emails(job) except EmailNotDeliveredException: logger.warning("%r not delivered", job) time.sleep(10) else: # Less load on the db during times of activity, # and more responsiveness when the load is low time.sleep(2)
def handle(self, *args: Any, **options: Any) -> None: if settings.EMAIL_DELIVERER_DISABLED: sleep_forever() with lockfile("/tmp/zulip_email_deliver.lockfile"): while True: email_jobs_to_deliver = ScheduledEmail.objects.filter( scheduled_timestamp__lte=timezone_now()) if email_jobs_to_deliver: for job in email_jobs_to_deliver: try: send_email(**loads(job.data)) job.delete() except EmailNotDeliveredException: logger.warning("%r not delivered" % (job,)) time.sleep(10) else: # Less load on the db during times of activity, # and more responsiveness when the load is low time.sleep(2)
def handle(self, *args: Any, **options: Any) -> None: if settings.EMAIL_DELIVERER_DISABLED: sleep_forever() with lockfile("/tmp/zulip_email_deliver.lockfile"): while True: email_jobs_to_deliver = ScheduledEmail.objects.filter( scheduled_timestamp__lte=timezone_now()) if email_jobs_to_deliver: for job in email_jobs_to_deliver: handle_send_email_format_changes(job) try: send_email(**loads(job.data)) job.delete() except EmailNotDeliveredException: logger.warning("%r not delivered" % (job, )) time.sleep(10) else: # Less load on the db during times of activity, # and more responsiveness when the load is low time.sleep(2)