FastApi使用Celery的任务时报错AssertionError
FastApi使用Celery的任务时报错AssertionError: daemonic processes are not allowed to have children。
报错的起因是我在这个任务中使用了`process`函数,相当于开了一个子进程,而uvicorn默认启动的是守护进程(daemon),而一般情况下守护进程是不能创建子进程的。
Home of Little Jelly
FastApi使用Celery的任务时报错AssertionError: daemonic processes are not allowed to have children。
报错的起因是我在这个任务中使用了`process`函数,相当于开了一个子进程,而uvicorn默认启动的是守护进程(daemon),而一般情况下守护进程是不能创建子进程的。
要在FastAPI中使用Celery队列和定时执行任务,需要遵循以下步骤:
1. 首先,在项目中安装Celery和相应的消息队列,比如RabbitMQ或Redis。
2. 创建一个包含Celery配置的文件,比如celeryconfig.py。这个文件应该包含Celery的配置信息,例如消息队列的连接信息、任务序列化方式、任务结果序列化方式等等。
Celery队列可以被集成在Django中。
假定我们已经有一个Django项目叫`pyseg`.
首先在`pyseg/pyseg`下新建一个`mycelery.py`
Python中使用Celery队列。
Celery的架构由三部分组成,消息中间件(message broker),任务执行单元(worker)和任务执行结果存储(task result store)组成。
消息中间件:Celery本身不提供消息服务,但是可以方便的和第三方提供的消息中间件集成。包括,RabbitMQ, Redis, MongoDB, Amazon SQS,CouchDB, SQLAlchemy ,Django ORM, IronMQ。推荐使用RabbitMQ、Redis作为消息队列。