https://stackoverflow.com/questions/44834/what-does-all-mean-in-python
__all__ is used to export variables so other modules can use :
inked to, but not explicitly mentioned here, is exactly when __all__ is used. It is a list of strings defining what symbols in a module will be exported when from <module> import * is used on the module.
For example, the following code in a foo.py explicitly exports the symbols bar and baz:
__all__ = ['bar', 'baz']
waz = 5
bar = 10
def baz(): return 'baz'
These symbols can then be imported like so:
from foo import *
print(bar)
print(baz)
# The following will trigger an exception, as "waz" is not exported by the module
print(waz)
-----------------------------------------------------------------
__all__ is located in django __init__.py for each app, so what you have specified can be imported by other modules
for example :django_celery/
├── __init__.py
├── asgi.py
├── celery.py
├── settings.py
├── urls.py
└── wsgi.py
# django_celery/celery.py
 2
 3import os
 4from celery import Celery
 5
 6os.environ.setdefault("DJANGO_SETTINGS_MODULE", "django_celery.settings")
 7app = Celery("django_celery")
 8app.config_from_object("django.conf:settings", namespace="CELERY")
 9app.autodiscover_tasks()
# this is to import app varaible from django_celery/celery.py and exported as celery_app so it can be picked up by celery
# django_celery/__init__.py
from .celery import app as celery_app
__all__ = ("celery_app",)
 
No comments:
Post a Comment