更新了celery相关的解决方法

This commit is contained in:
2026-01-10 18:08:34 +08:00
parent c4d307136a
commit cb851f90b8
2 changed files with 106 additions and 2 deletions

103
README.md
View File

@@ -396,7 +396,108 @@ def setup_daily_report_task():
- 检查邮件是否正常发送
- 在 Django 管理后台查看任务执行记录
### 5. 常见问题排查
### 5. 日志文件不存在问题解决方法
如果在生产服务器上执行 `tail -f /var/log/celery/worker.log` 时提示 `No such file or directory`,请按照以下步骤解决:
#### 步骤1检查日志目录是否存在
```bash
# 检查日志目录是否存在
ls -la /var/log/celery/
# 如果目录不存在,创建目录
sudo mkdir -p /var/log/celery/
# 设置正确的权限(确保 Celery 进程用户有读写权限)
sudo chown -R www-data:www-data /var/log/celery/
sudo chmod -R 755 /var/log/celery/
```
#### 步骤2检查 Supervisor 配置
确保 Supervisor 配置文件中指定的日志路径正确,并且 Celery 进程用户对该路径有读写权限。
#### 步骤3重启 Supervisor 和 Celery
```bash
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl restart celery_worker celery_beat
```
### 6. 试运行周期任务
当设置一个周期任务后,您可以通过以下方式试运行任务,而不需要等待到指定的时间:
#### 方式1通过 Django 管理后台
1. 登录 Django 管理后台(/houtai
2. 找到 **Periodic tasks**(周期性任务)
3. 选择您创建的任务
4. 点击页面底部的 **Run Task** 按钮立即执行任务
#### 方式2通过命令行
```bash
# 直接调用任务函数(同步执行)
python manage.py shell -c "from core.tasks import generate_daily_pdf_report; generate_daily_pdf_report()"
# 或者使用 Celery 命令行工具
celery -A diary_family call core.tasks.generate_daily_pdf_report
```
#### 方式3使用测试脚本
项目提供了一个测试脚本,用于验证 Celery 任务是否可以正常运行:
```bash
# 运行测试脚本
python test_celery.py
```
### 7. 常见错误和解决方法
#### 错误1日志文件不存在
**错误信息**`tail: cannot open '/var/log/celery/worker.log' for reading: No such file or directory`
**解决方法**
- 按照步骤5中的说明创建日志目录并设置正确权限
- 检查 Supervisor 配置中的日志路径是否正确
- 重启 Supervisor 和 Celery 服务
#### 错误2Celery 无法连接到 Redis
**错误信息**`redis.exceptions.ConnectionError: Error 111 connecting to localhost:6379. Connection refused.`
**解决方法**
- 检查 Redis 服务是否正常运行:`sudo systemctl status redis-server`
- 启动 Redis 服务:`sudo systemctl start redis-server`
- 检查 Redis 配置是否允许本地连接
#### 错误3任务执行失败
**错误信息**`Task core.tasks.generate_daily_pdf_report[xxx] raised unexpected: Exception(...)`
**解决方法**
- 查看详细日志:`tail -f /var/log/celery/worker.log`
- 检查任务代码中的错误
- 确保所有依赖库都已正确安装
- 检查相关服务如数据库、Redis是否正常运行
#### 错误4PDF 生成失败
**错误信息**`WeasyPrint库不可用无法生成PDF报告`
**解决方法**
- 安装 WeasyPrint 库:`pip install weasyprint`
- 对于 Ubuntu 系统,可能需要安装系统依赖:
```bash
sudo apt-get install -y libpango-1.0-0 libpangoft2-1.0-0
```
### 8. 常见问题排查
1. **任务不执行**
- 检查 Celery worker 和 beat 是否正常运行