能否用Django RQ延迟执行模型入库任务?遇异常求解决方案
解决Django RQ执行模型入库任务时的崩溃问题
你的错误是macOS系统特有的Objective-C运行时冲突,原因是RQ默认使用fork创建子进程处理任务,而macOS的ObjC初始化在fork后会触发安全检查导致崩溃。以下是修复步骤:
1. 启动Worker时禁用Fork模式
直接使用不依赖fork的SimpleWorker启动worker,替换原启动命令:
python manage.py rqworker --worker-class rq.SimpleWorker
或者通过参数直接禁用fork:
python manage.py rqworker --no-fork
2. 确保Job能正确访问Django ORM
你的现有代码逻辑没问题,但如果后续遇到ORM访问异常,需确保job函数能正确加载Django环境。若job不在Django app的可导入路径中,可在job开头手动初始化:
import django django.setup()
不过使用django-rq时,manage.py rqworker已经自动完成了环境初始化,这一步通常不需要额外操作。
3. 验证修复效果
重启worker后调用test_view触发任务,此时worker应能正常执行create_model函数,将数据写入数据库,控制台会输出Done!。
内容的提问来源于stack exchange,提问作者Ivan
相关产品推荐
相关产品推荐

