के साथ crontab का उपयोग करके मुझे crontab से प्रतिदिन न्यूज़लेटर्स भेजने के लिए एक फ़ंक्शन बनाने की आवश्यकता है। फ़ाइल Django परियोजना फ़ोल्डर में रखा -django
पहले::
#! /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 ,['[email protected]'])
if __name__ == '__main__':
main()
मुझे यकीन है कि अगर यह काम करेगा नहीं कर रहा हूँ और मुझे यकीन है कि कैसे नहीं हूँ मैं इंटरनेट पर ऐसा करने के दो तरीके मिल गया है इसे चलाने के लिए। मान लें कि इसे run.py कहा जाता है, तो क्या मुझे इसे 0 0 * * * python /path/to/project/run.py
के साथ क्रॉन में कॉल करना चाहिए?
दूसरा समाधान - एक run.py स्क्रिप्ट कहीं (सिर्फ एक सामान्य Django समारोह की तरह) मेरी भेजने समारोह बनाते हैं और फिर बनाने के लिए: क्रॉन कॉल में
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))
और फिर: 0 0 * * * python /path/to/project/run.py newsletter.views daily_job()
जो विधि काम करेगा, या कौन सा बेहतर होगा?
ठीक है, लेकिन यह मेरे लिए की आवश्यकता है बहुत सारी चीज़ें इंस्टॉल करें जिन्हें मुझे वास्तव में आवश्यकता नहीं है। और अगर मैं सिर्फ यह काम करना चाहता हूं? – crivateos
आप कभी भी इस Django परियोजना के साथ एक और crontab कार्य नहीं करेंगे? तब अशोक का जवाब सबसे अच्छा काम करेगा; manage.py को कष्टप्रद सेटअप का ख्याल रखना चाहिए। हालांकि मुझे नहीं लगता कि कैसे 'sudo easy_install django-extension' है "आपको जिस सामान की आवश्यकता नहीं है"। –
मैं नौकरियों के ढांचे का प्रशंसक नहीं हूं - प्रबंधन आदेशों के साथ छड़ी सीधे या तो क्रोन के माध्यम से या डीजेंगो-क्रोनोग्रफ़ –