django - Django-q:警告在超时后重生的工人 Process-1:1
问题描述
我已经安装并配置了 Django-Q 1.3.5(在带有 Redis 3.5.3 和 Python 3.8.5 的 Django 3.2 上)。这是我的集群配置:
# redis defaults
Q_CLUSTER = {
'name': 'my_broker',
'workers': 4,
'recycle': 500,
'timeout': 60,
'retry': 65,
'compress': True,
'save_limit': 250,
'queue_limit': 500,
'cpu_affinity': 1,
'redis': {
'host': 'localhost',
'port': 6379,
'db': 0,
'password': None,
'socket_timeout': None,
'charset': 'utf-8',
'errors': 'strict',
'unix_socket_path': None
}
}
我已经适当地选择timeout:60
并retry:65
解释了我的问题。我创建了这个简单的函数来通过管理员计划任务调用:
def test_timeout_task():
time.sleep(61)
return "Result of task"
这是我的“计划任务页面”(localhost:8000/admin/django_q/schedule/)
ID | 姓名 | 功能 | 成功 |
---|---|---|---|
1 | 测试超时 | mymodel.tasks.test_timeout_task | ? |
当我运行此任务时,我收到以下警告:
10:18:21 [Q] INFO Process-1 created a task from schedule [test timeout]
10:19:22 [Q] WARNING reincarnated worker Process-1:1 after timeout
10:19:22 [Q] INFO Process-1:7 ready for work at 68301
并且任务不再执行。
所以,我的问题是:有没有办法正确处理不可预测的任务?
解决方案
推荐阅读
- launch - Cobalt 17.180626 调试版本 Ubuntu 16.04 无法加载视频
- javascript - Javascript:当文件名中有中文字符时抛出错误
- azure - 远程调试 azure
- php - 如何按降序显示数组中的键值?
- postgresql - 使用自定义 postgres 扩展时,外部数据库请求失败
- python - 使用 Python 将二维列表打印为多项式
- python - 没有这样的文件或目录:.../myapp-debug.apk
- java - 将通用对象与整数进行比较
- express - 无法从 Heroku 应用获取数据。CORS 错误
- c++ - CMakeLists.txt:5 (find_package) 处的 CMake 错误