0

Django 1.10、Python 3.5 でスクリプトを単独で実行しようとしていますが、コードは Django モデルを使用します。

Django プロジェクトのルートにあるスクリプト。

import os
import sys
import django
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "proj.settings")
application = get_wsgi_application()


from pipeline.models import *
c = ModelName.objects.all()

django.core.exceptions.AppRegistryNotReady: Apps are not loaded yet というエラーが発生しました。次のコード行。アプリケーション = get_wsgi_application()

以前は、Django-extension - runscript を使用してこれらのスクリプトを実行し、データ処理タスクを実行していましたが、それは celery と互換性のない manage.py に依存しています (定期的なタスク管理を提供します)。

問題を解決するためのアイデアや、runscript とセロリを組み合わせる方法はありますか?

これは完全なエラートラックです

Traceback (most recent call last):
  File "celery_test.py", line 25, in <module>
    application = get_wsgi_application()
  File "/home/ah/anaconda2/envs/zorro/lib/python3.5/site-packages/django/core/wsgi.py", line 13, in get_wsgi_application
    django.setup(set_prefix=False)
  File "/home/ah/anaconda2/envs/zorro/lib/python3.5/site-packages/django/__init__.py", line 22, in setup
    configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
  File "/home/ah/anaconda2/envs/zorro/lib/python3.5/site-packages/django/conf/__init__.py", line 53, in __getattr__
    self._setup(name)
  File "/home/ah/anaconda2/envs/zorro/lib/python3.5/site-packages/django/conf/__init__.py", line 41, in _setup
    self._wrapped = Settings(settings_module)
  File "/home/ah/anaconda2/envs/zorro/lib/python3.5/site-packages/django/conf/__init__.py", line 97, in __init__
    mod = importlib.import_module(self.SETTINGS_MODULE)
  File "/home/ah/anaconda2/envs/zorro/lib/python3.5/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 986, in _gcd_import
  File "<frozen importlib._bootstrap>", line 969, in _find_and_load
  File "<frozen importlib._bootstrap>", line 944, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 986, in _gcd_import
  File "<frozen importlib._bootstrap>", line 969, in _find_and_load
  File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 665, in exec_module
  File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
  File "/home/ah/project/zorro/zorro/__init__.py", line 5, in <module>
    from .celery import app as celery_app
  File "/home/ah/project/zorro/zorro/celery.py", line 5, in <module>
    from pipeline.tasks import run_cmc
  File "/home/ah/project/zorro/pipeline/tasks.py", line 2, in <module>
    from pipeline.scripts.celery_test import celery_test
  File "/home/ah/project/zorro/pipeline/scripts/celery_test.py", line 1, in <module>
    from pipeline.models import CleanedJob
  File "/home/ah/project/zorro/pipeline/models/__init__.py", line 1, in <module>
    from .models_general import *
  File "/home/ah/project/zorro/pipeline/models/models_general.py", line 7, in <module>
    from pipeline.models.models_timestamp import TimeStamped
  File "/home/ah/project/zorro/pipeline/models/models_timestamp.py", line 5, in <module>
    class TimeStamped(models.Model):
  File "/home/ah/anaconda2/envs/zorro/lib/python3.5/site-packages/django/db/models/base.py", line 105, in __new__
    app_config = apps.get_containing_app_config(module)
  File "/home/ah/anaconda2/envs/zorro/lib/python3.5/site-packages/django/apps/registry.py", line 237, in get_containing_app_config
    self.check_apps_ready()
  File "/home/ah/anaconda2/envs/zorro/lib/python3.5/site-packages/django/apps/registry.py", line 124, in check_apps_ready
    raise AppRegistryNotReady("Apps aren't loaded yet.")
django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.

proj/proj ディレクトリ (celery.py、tasks.py、およびinit .py 内のコンテンツを含む) と app_name/tasks にある Celery に関連するすべてのファイルを削除することで問題を解決しました。

しかし、それらはどのように連携するのでしょうか?

4

0 に答える 0