KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I need to create a function for sending newsletters everyday from crontab. I've found two ways of doing this on the internet : First - file placed in the django project folder: #! /usr/bin/env python import sys import os from django.core.management import setup_environ import settings setup_environ(settings) from django.core.mail import send_mail from project.newsletter.models import Newsletter, Address def main(argv=None): if argv is None: argv = sys.argv newsletters = Newsletter.objects.filter(sent=False) message = 'Your newsletter.' adr = Address.objects.all() for a in adr: for n in newsletters: send_mail('System report',message, a ,['user@example.com']) if __name__ == '__main__': main() I'm not sure if it will work and I'm not sure how to run it. Let's say it's called run.py, so should I call it in cron with 0 0 * * * python /path/to/project/run.py ? Second solution - create my send function anywhere (just like a normal django function), and then create a run.py script : import sys import os os.environ['DJANGO_SETTINGS_MODULE'] = 'settings' module_name = sys.argv[1] function_name = ' '.join(sys.argv[2:]) exec('import %s' % module_name) exec('%s.%s' % (module_name, function_name)) And then in cron call : 0 0 * * * python /path/to/project/run.py newsletter.views daily_job() Which method will work, or which is better ?
Tags (comma-separated)
Save Edits
Cancel