Ошибка django.core.exceptions.ImproperlyConfigured: Requested setting LOGGING_CONFIG, but settings are not configured
Я задеплоил свой django app на PythonAnywhere и хочу добавить задачу в scheduled tasks. Но при исполнении скрипта даёт ошибку:
django.core.exceptions.ImproperlyConfigured: Requested setting LOGGING_CONFIG, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
Я пробовал делать то, что мне предлагает сама ошибка. Также пробовал:
os.environ.setdefault('DJANGO_SETTING_MODULE', 'smsreminder.settings')
django.setup()
результат — та же ошибка, но уже на django.setup().
Мой скрипт в файле, который я хочу запустить:
import datetime
from django_common.auth_backends import User
from reminder.models import Remind
from twilio.base.exceptions import TwilioRestException
from twilio.rest import Client
def my_scheduled_job():
content = Remind.objects.all()
account_sid = "--------------------------"
auth_token = "--------------------------"
for smscontent in content:
if smscontent.remind_date == datetime.today().date():
tempusers = User.objects.filter(username=smscontent.author)
for recipient in tempusers:
try:
client = Client(account_sid, auth_token)
message = client.messages.create(
body="I just want to remind, that you have some task for today {date}: {task}. {time} is the deadline!".format(
date=str(smscontent.remind_date),
task=str(smscontent.title),
time=str(smscontent.remind_time)),
to=str(recipient.username),
from_="+18568889437")
print(message.sid)
except TwilioRestException:
pass
return
Сама ошибка:
Traceback (most recent call last):
File "/home/remindmy/sms-reminder/reminder/cron.py", line 3, in <module>
from django_common.auth_backends import User
File "/home/remindmy/.virtualenvs/remindervenv/lib/python3.9/site-packages/django_common/auth_backends.py", line 6, in <module>
from django.contrib.auth.backends import ModelBackend
File "/home/remindmy/.virtualenvs/remindervenv/lib/python3.9/site-packages/django/contrib/auth/backends.py", line 2, in <module>
from django.contrib.auth.models import Permission
File "/home/remindmy/.virtualenvs/remindervenv/lib/python3.9/site-packages/django/contrib/auth/models.py", line 3, in <module>
from django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager
File "/home/remindmy/.virtualenvs/remindervenv/lib/python3.9/site-packages/django/contrib/auth/base_user.py", line 48, in <module>
class AbstractBaseUser(models.Model):
File "/home/remindmy/.virtualenvs/remindervenv/lib/python3.9/site-packages/django/db/models/base.py", line 108, in __new__
app_config = apps.get_containing_app_config(module)
File "/home/remindmy/.virtualenvs/remindervenv/lib/python3.9/site-packages/django/apps/registry.py", line 253, in get_containing_app_config
self.check_apps_ready()
File "/home/remindmy/.virtualenvs/remindervenv/lib/python3.9/site-packages/django/apps/registry.py", line 135, in check_apps_ready
settings.INSTALLED_APPS
File "/home/remindmy/.virtualenvs/remindervenv/lib/python3.9/site-packages/django/conf/__init__.py", line 82, in __getattr__
self._setup(name)
File "/home/remindmy/.virtualenvs/remindervenv/lib/python3.9/site-packages/django/conf/__init__.py", line 63, in _setup
raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
Посоветуйте что-нибудь, пожалуйста.
Ответы (1 шт):
Автор решения: Sergei Malanin
→ Ссылка
Создал шаблонный проект что для демонстрации.
В нем скрипт script.py для демонстрации как сделать так что бы сеттингс из джанки заработал.
import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'reminder.settings')
import django
from django.conf import settings
if not settings.configured:
django.setup()
from user_management.models import BasicUser
def do_some_stuff():
print(len(BasicUser.objects.all()))
if __name__ == "__main__":
do_some_stuff()
Весь проект тут, можно позапускать
$ python script.py
только миграции сделать не забудьте.