def celery_sendmail_task(obj,unsubscribe_url,host): #time.sleep(10) send_email(obj,unsubscribe_url,host) obj.status=True if obj.campaign_opt=='S': obj.campaign_opt='R' obj.save()
def celery_scheduled_campaign(schedule_id): # Lock to ensure task only runs once LOCK_EXPIRE = 60 * 30 # Lock expires in 30 minutes try: obj = CampaignSchedule.objects.get(pk=schedule_id) my_lock = redis.Redis().lock(obj.campaign.campaign_uuid,timeout=LOCK_EXPIRE) if my_lock.acquire(blocking=False) and obj.campaign.status == False: send_email(obj.campaign, obj.unsub_url, obj.ecm_host) obj.campaign.status = True obj.campaign.save() my_lock.release() else: logger.warn("Task is already running, Lock name:{0} ,Exiting".format( obj.campaign.campaign_uuid)) except Exception, e: logger.error("Critical Error : celery_scheduled_campaign: {0} ".format(e))