'Django Cronjob issue With multiple Environments
I am having some issues setting up Django-crontab in my project (With Multiple enviournments).
Here we have base.py contains all common settings and we have multiple environments like local.py, production.py, etc inside the settings folder.
settings <-- folder
__init__.py
base.py
local.py
production.py
I have defined my generate_data.py under an app named cron_jobs. So its location is project/cron_jobs(which is the app)/generate_data.py. Inside generate_data.py, is a function named data_detail().
I have defined 'django_crontab' under my base.py in INSTALLED_APPS.
Declare Cron Job - in local.py file
CRONTAB_COMMAND_SUFFIX = '2>&1'
CRONJOBS = [
('* * * * *', 'cron_jobs.generate_data.data_detail' , '>>'+os.path.join(BASE_DIR,'log', 'debug7.log'))
]
Add Cron -
python manage.py crontab add --settings=project_dir.settings.local
Check Cron is added or not -
crontab -l
* * * * * /home/pradeep/Desktop/phase4/convo-ocr/convo_ocr/venv/bin/python /home/pradeep/Desktop/phase4/convo-ocr/convo_ocr/manage.py crontab run 8d0abd75f775830eb29cddc63eeb30ea >>/home/pradeep/Desktop/phase4/convo-ocr/convo_ocr/log/debug7.log 2>&1 # django-cronjobs for convo_ocr
ERROR
Traceback (most recent call last):
File "/home/pradeep/Desktop/phase4/convo-ocr/convo_ocr/venv/lib/python3.8/site-packages/django/core/management/__init__.py", line 224, in fetch_command
**app_name = commands[subcommand]
KeyError: 'crontab'**
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/pradeep/Desktop/phase4/convo-ocr/convo_ocr/manage.py", line 34, in <module>
main()
File "/home/pradeep/Desktop/phase4/convo-ocr/convo_ocr/manage.py", line 29, in main
**execute_from_command_line(sys.argv)**
File "/home/pradeep/Desktop/phase4/convo-ocr/convo_ocr/venv/lib/python3.8/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
utility.execute()
File "/home/pradeep/Desktop/phase4/convo-ocr/convo_ocr/venv/lib/python3.8/site-packages/django/core/management/__init__.py", line 395, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/pradeep/Desktop/phase4/convo-ocr/convo_ocr/venv/lib/python3.8/site-packages/django/core/management/__init__.py", line 231, in fetch_command
settings.INSTALLED_APPS
File "/home/pradeep/Desktop/phase4/convo-ocr/convo_ocr/venv/lib/python3.8/site-packages/django/conf/__init__.py", line 76, in __getattr__
self._setup(name)
File "/home/pradeep/Desktop/phase4/convo-ocr/convo_ocr/venv/lib/python3.8/site-packages/django/conf/__init__.py", line 63, in _setup
self._wrapped = Settings(settings_module)
File "/home/pradeep/Desktop/phase4/convo-ocr/convo_ocr/venv/lib/python3.8/site-packages/django/conf/__init__.py", line 161, in __init__
raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")
**django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.**
Manage.py file look like this
def main():
"""Run administrative tasks."""
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'convo_ocr.settings')
try:
from django.core.management import execute_from_command_line
except ImportError as exc:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
) from exc
execute_from_command_line(sys.argv)
Solution 1:[1]
You can specify your default settings in manage.py file
def main():
"""Run administrative tasks."""
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "xtendtv_kiosk.settings.prod") <-------
try:
from django.core.management import execute_from_command_line
except ImportError as exc:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
) from exc
execute_from_command_line(sys.argv)
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | joanis |
