Search code examples
pythondjangoamazon-ec2cron

Django-crontab is not working on in ec2 ubuntu virtual environment


i use django-crontab library in mac m1 bigsur

# settings.py
INSTALLED_APPS = [
'django_crontab'
]

CRONJOBS = [
    ('*/5 * * * *', 'diagnoses.croncode.ChangeRegisterView')
]

# croncode.py

def ChangeRegisterView():

and i used python manage.py crontab add

It was installed in a virtual environment. and It works well in a local environment.

however it's not working at ec2!! The virtual environment anaconda python=3.8.11 version is installed and used by aws ec2.

like this

Traceback (most recent call last):
  File "/home/ubuntu/miniconda3/lib/python3.9/site-packages/gunicorn/arbiter.py", line 589, in spawn_worker
    worker.init_process()
  File "/home/ubuntu/miniconda3/lib/python3.9/site-packages/gunicorn/workers/base.py", line 134, in init_process
    self.load_wsgi()
  File "/home/ubuntu/miniconda3/lib/python3.9/site-packages/gunicorn/workers/base.py", line 146, in load_wsgi
    self.wsgi = self.app.wsgi()
  File "/home/ubuntu/miniconda3/lib/python3.9/site-packages/gunicorn/app/base.py", line 67, in wsgi
    self.callable = self.load()
  File "/home/ubuntu/miniconda3/lib/python3.9/site-packages/gunicorn/app/wsgiapp.py", line 58, in load
    return self.load_wsgiapp()
  File "/home/ubuntu/miniconda3/lib/python3.9/site-packages/gunicorn/app/wsgiapp.py", line 48, in load_wsgiapp
    return util.import_app(self.app_uri)
  File "/home/ubuntu/miniconda3/lib/python3.9/site-packages/gunicorn/util.py", line 359, in import_app
    mod = importlib.import_module(module)
  File "/home/ubuntu/miniconda3/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 855, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "/home/ubuntu/safe-back/safe-back/safehomes/safehomes/wsgi.py", line 16, in <module>
    application = get_wsgi_application()
  File "/home/ubuntu/miniconda3/lib/python3.9/site-packages/django/core/wsgi.py", line 12, in get_wsgi_application
    django.setup(set_prefix=False)
  File "/home/ubuntu/miniconda3/lib/python3.9/site-packages/django/__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/home/ubuntu/miniconda3/lib/python3.9/site-packages/django/apps/registry.py", line 91, in populate
    app_config = AppConfig.create(entry)
  File "/home/ubuntu/miniconda3/lib/python3.9/site-packages/django/apps/config.py", line 224, in create
    import_module(entry)
  File "/home/ubuntu/miniconda3/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 984, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'django_crontab'

i want to two things.

  1. I want to do a cronlog path in ec2 Ubuntu environment.
  2. I want to turn django-crontab in ec2.

help bros!!


Solution

  • Here are the step to add cronjob in django using django-crontab (Mac, Linux)

    1. Install the package

      pip3 install django-crontab

    If that gives and issue then perform uninstallation command or force install by

    python3 -m pip install django-crontab
    
    1. add 'django_crontab' in your INSTALLED_APPS

    2. create new crons.py file in your app named

    3. add your cronjob method in crons.py, for example

    4. add following configuration in your settings.py file

      CRON JOB SETTINGS

       CRONJOBS = [
           ('*/1 * * * *', 'your_app_name.crons.your_cronjob_method'),
       ]