更新了celery相关的解决方法
This commit is contained in:
103
README.md
103
README.md
@@ -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 服务
|
||||
|
||||
#### 错误2:Celery 无法连接到 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)是否正常运行
|
||||
|
||||
#### 错误4:PDF 生成失败
|
||||
|
||||
**错误信息**:`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 是否正常运行
|
||||
|
||||
Reference in New Issue
Block a user