一、不能在异步中调用sync_to_async
1、报错内容:
django.core.exceptions.SynchronousOnlyOperation: You cannot call this from an async context - use a thread or sync_to_async.
2、解决方案:
在settings.py加上:
os.environ['DJANGO_ALLOW_ASYNC_UNSAFE'] = 'true' # 允许异步模式
二、没有设置 INSTALLED_APPS
1、报错内容
使用manage.py开发模式启动项目没有问题,但是到了linux服务器使用daphna启动项目报错:
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.,
INSTALLED_APPS 是setting最重要的一部分,怎么可能会没有设置呢,只能说django没有找到,说明没有读取到setting文件
2、解决方案
把setting 添加到环境变量;
export DJANGO_SETTINGS_MODULE=【项目根目录】.settings # 例如:
export DJANGO_SETTINGS_MODULE=myitem.settings
三、应用程序尚未加载
1、报错内容
本错往往在解决了第二条错误的时候出现,报错内容:
AppRegistryNotReady: Apps aren't loaded yet
2、解决方案
在asgj.py文件顶部增加:
import django
django.setup()
注意,建议在顶部!至少在导入 routings上面,否则会报错
四、celery在linux启动需要设置环境变量
1、报错内容
Running a worker with superuser privileges when the worker accepts messages serialized with pickle is a very bad idea! If you really want to continue then you have to set the C_FORCE_ROOT environment variable (but please think about this before you do). User information: uid=0 euid=0 gid=0 egid=0
2、解决方案
其实上面说的已经很明白:"如果你想继续,必须设置 C_FORCE_ROOT 环境变量, linux系统直接输入:
export C_FORCE_ROOT="true"
然后再正常启动即可。