I have a django script to send a slack report about the number of object Open Position
be created everyday and it should be run daily at 18:00.
When I run the cron in my computer, it only work when I add SHELL=/bin/bash
into the cron file).
SHELL=/bin/bash
* * * * * source /the_virtual_env_path/bin/activate && cd /my_project_path/ && ./manage.py daily_slack
But when I add the those commands to the cron on my Amazon EC2 instance, nothing happens. I tried to add some environment variables in the shell which not in cron environment (via this answer), restart the cron but it didn't work. But if I run the commands manually it run properly.
This is the code for my script:
# -*- coding: utf-8 -*-
from django.core.management.base import BaseCommand, CommandError
from slackclient import SlackClient
from human_resource.models.recruitment import OpenPosition, TimeMarkForSlackReport
import datetime
import os
slack_token = 'my_slack_token'
sc = SlackClient(slack_token)
contents = []
attachments = []
class Command(BaseCommand):
def handle(self, *args, **options):
today = datetime.date.today()
today_open_position_queryset = OpenPosition.objects.filter(created_at__date=today)
count = 0
if(len(today_open_position_queryset) != 0):
for open_position in today_open_position_queryset:
count += 1
open_position_details = [
{
"title": open_position.name,
"value": "Position: " + open_position.position.position_name
+ " | Team: " + open_position.team.team_name
+ " | Created at: " + open_position.created_at.time().strftime('%H:%M')
+ " | Created by: " + str(open_position.created_by) +
" | <" +
"my_link" + str(open_position.pk) + "|Click here> for the open position link!",
},
]
contents.extend(open_position_details)
attachments = [
{
"color": "000000",
"fields": contents
}
]
sc.api_call(
"chat.postMessage",
link_names=1,
channel='#my_channel', # replace with channel or person
username="Daily Report",
text="Today Open Positions",
attachments = attachments
)
Does anyone have any advice or possible solutions? I've been struggling with this problem for days. Thanks for your time!
SOLVED: It seems like the time zone difference delays the execution of my commands