django-simpletask5 0.1.3__tar.gz → 0.1.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/PKG-INFO +90 -1
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/README.md +87 -0
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/core/defaults.py +0 -2
- django_simpletask5-0.1.4/django_simpletask5/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
- django_simpletask5-0.1.4/django_simpletask5/locale/zh_Hans/LC_MESSAGES/django.po +418 -0
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5.egg-info/PKG-INFO +90 -1
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5.egg-info/SOURCES.txt +2 -0
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5.egg-info/requires.txt +2 -0
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/pyproject.toml +6 -1
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/LICENSE +0 -0
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/__init__.py +0 -0
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/admin.py +0 -0
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/apps.py +0 -0
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/core/__init__.py +0 -0
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/core/cronjob_registry.py +0 -0
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/core/executor_scanner.py +0 -0
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/core/lock.py +0 -0
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/core/message_queue.py +0 -0
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/core/publisher.py +0 -0
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/core/signals.py +0 -0
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/core/worker_registry.py +0 -0
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/dashboards.py +0 -0
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/executors/__init__.py +0 -0
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/executors/archive.py +0 -0
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/executors/base.py +0 -0
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/executors/bash_script.py +0 -0
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/executors/loader.py +0 -0
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/executors/ping_pong.py +0 -0
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/executors/python_script.py +0 -0
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/executors/retry_timeout.py +0 -0
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/executors/simple_request.py +0 -0
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/executors/status_check.py +0 -0
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/management/__init__.py +0 -0
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/management/commands/__init__.py +0 -0
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/management/commands/django_simpletask_archive.py +0 -0
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/management/commands/django_simpletask_crontab.py +0 -0
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/management/commands/django_simpletask_executor.py +0 -0
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/management/commands/django_simpletask_sync_cronjobs.py +0 -0
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/migrations/0001_initial.py +0 -0
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/migrations/0002_taskexecution_done_tasks_count_and_more.py +0 -0
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/migrations/0003_alter_cronjob_options_remove_cronjob_name_and_more.py +0 -0
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/migrations/0004_alter_cronjob_is_modified_by_user.py +0 -0
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/migrations/0005_alter_cronjob_is_modified_by_user_help.py +0 -0
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/migrations/__init__.py +0 -0
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/models.py +0 -0
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/services/__init__.py +0 -0
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/services/archive.py +0 -0
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5.egg-info/dependency_links.txt +0 -0
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5.egg-info/top_level.txt +0 -0
- {django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: django-simpletask5
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.4
|
|
4
4
|
Summary: Lightweight async task execution framework for Django
|
|
5
5
|
Author-email: rRR0VrFP <rrr0vrfp@qq.com>
|
|
6
6
|
Maintainer-email: rRR0VrFP <rrr0vrfp@qq.com>
|
|
@@ -27,6 +27,8 @@ Requires-Dist: globallock>=0.1.4
|
|
|
27
27
|
Requires-Dist: django-safe-fields>=0.2.3
|
|
28
28
|
Requires-Dist: django-app-requires>=0.3.6
|
|
29
29
|
Requires-Dist: django-admin-dashboards>=0.1.1
|
|
30
|
+
Requires-Dist: django-checkbox-normalize>=0.2.2
|
|
31
|
+
Requires-Dist: django-tabbed-changeform-admin>=0.1.9
|
|
30
32
|
Requires-Dist: cryptography>=48.0.0
|
|
31
33
|
Requires-Dist: croniter>=6.2.2
|
|
32
34
|
Requires-Dist: requests>=2.34.2
|
|
@@ -104,6 +106,87 @@ DJANGO_SIMPLETASK_LOCK_CONFIG = {
|
|
|
104
106
|
python manage.py migrate django_simpletask5
|
|
105
107
|
```
|
|
106
108
|
|
|
109
|
+
## 配置说明
|
|
110
|
+
|
|
111
|
+
所有配置项均为可选,设有合理的默认值。以下按功能分类说明。
|
|
112
|
+
|
|
113
|
+
### 消息队列(MQ)
|
|
114
|
+
|
|
115
|
+
默认使用内存队列(`memory://`),适合开发调试。生产环境建议切换为 RabbitMQ 或 Redis。
|
|
116
|
+
|
|
117
|
+
```python
|
|
118
|
+
# 方式一:直接指定完整 Broker URL(优先级最高)
|
|
119
|
+
DJANGO_SIMPLETASK_BROKER_URL = 'amqp://guest:guest@127.0.0.1:5672//'
|
|
120
|
+
|
|
121
|
+
# 方式二:分别指定类型和连接参数
|
|
122
|
+
DJANGO_SIMPLETASK_MESSAGE_QUEUE_TYPE = 'rabbitmq' # 'memory' | 'rabbitmq' | 'redis'
|
|
123
|
+
DJANGO_SIMPLETASK_RABBITMQ_HOST = '127.0.0.1'
|
|
124
|
+
DJANGO_SIMPLETASK_RABBITMQ_PORT = 5672
|
|
125
|
+
DJANGO_SIMPLETASK_RABBITMQ_USER = 'guest'
|
|
126
|
+
DJANGO_SIMPLETASK_RABBITMQ_PASSWORD = 'guest'
|
|
127
|
+
|
|
128
|
+
# Redis 作为 MQ 时:
|
|
129
|
+
# DJANGO_SIMPLETASK_MESSAGE_QUEUE_TYPE = 'redis'
|
|
130
|
+
# DJANGO_SIMPLETASK_REDIS_MQ_HOST = '127.0.0.1'
|
|
131
|
+
# DJANGO_SIMPLETASK_REDIS_MQ_PORT = 6379
|
|
132
|
+
# DJANGO_SIMPLETASK_REDIS_MQ_DB = 0
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### 分布式锁
|
|
136
|
+
|
|
137
|
+
```python
|
|
138
|
+
DJANGO_SIMPLETASK_LOCK_CONFIG = {
|
|
139
|
+
'global_lock_engine_class': 'globallock.redis_global_lock.RedisGlobalLock',
|
|
140
|
+
'global_lock_engine_options': {
|
|
141
|
+
'host': '127.0.0.1',
|
|
142
|
+
'port': 6379,
|
|
143
|
+
'db': 0,
|
|
144
|
+
},
|
|
145
|
+
}
|
|
146
|
+
DJANGO_SIMPLETASK_LOCK_TIMEOUT = 600 # 锁超时时间(秒)
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### 队列路由
|
|
150
|
+
|
|
151
|
+
```python
|
|
152
|
+
DJANGO_SIMPLETASK_DEFAULT_QUEUE = 'django_simpletask5.queue.default' # 默认队列
|
|
153
|
+
DJANGO_SIMPLETASK_HIGH_PRIORITY_QUEUE = 'django_simpletask5.queue.high_priority' # 高优先级队列
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### 执行与重试
|
|
157
|
+
|
|
158
|
+
```python
|
|
159
|
+
DJANGO_SIMPLETASK_DEFAULT_MAX_RETRIES = 3 # 默认最大重试次数
|
|
160
|
+
DJANGO_SIMPLETASK_DEFAULT_TIMEOUT_SECONDS = 600 # 默认执行超时时间(秒)
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### 归档
|
|
164
|
+
|
|
165
|
+
```python
|
|
166
|
+
DJANGO_SIMPLETASK_ARCHIVE_PATH = 'django_simpletask5_archives' # 归档文件存储子目录
|
|
167
|
+
DJANGO_SIMPLETASK_ARCHIVE_SALT = 'django-simpletask5-archive' # 归档加密盐值(结合 SECRET_KEY 派生 AES 密钥)
|
|
168
|
+
DJANGO_SIMPLETASK_ARCHIVE_RETENTION_DAYS = 7 # 归档保留天数
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
### Cron
|
|
172
|
+
|
|
173
|
+
```python
|
|
174
|
+
DJANGO_SIMPLETASK_CRONJOB_AUTO_SYNC = True # 是否自动将代码注册的 Cron 同步到数据库
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### 安全
|
|
178
|
+
|
|
179
|
+
```python
|
|
180
|
+
# 脚本执行白名单(空列表表示不限制)
|
|
181
|
+
DJANGO_SIMPLETASK_SCRIPT_WHITELIST = ['/path/to/allowed/scripts']
|
|
182
|
+
|
|
183
|
+
# 自定义字段加密(默认使用 django-safe-fields 的默认加密)
|
|
184
|
+
DJANGO_SIMPLETASK_FIELD_CIPHER_CLASS = None # 自定义加密器类
|
|
185
|
+
DJANGO_SIMPLETASK_RESULT_PASSWORD = None # 执行结果加密密码
|
|
186
|
+
DJANGO_SIMPLETASK_ERROR_MSG_PASSWORD = None # 错误信息加密密码
|
|
187
|
+
DJANGO_SIMPLETASK_CONTEXT_PASSWORD = None # 上下文数据加密密码
|
|
188
|
+
```
|
|
189
|
+
|
|
107
190
|
## 快速开始
|
|
108
191
|
|
|
109
192
|
### 1. 定义任务模型
|
|
@@ -232,6 +315,12 @@ Worker 消费消息 → 获取分布式锁 → 加载执行器 → 执行并保
|
|
|
232
315
|
|
|
233
316
|
## Releases
|
|
234
317
|
|
|
318
|
+
### 0.1.4
|
|
319
|
+
|
|
320
|
+
- **修复打包** — `pyproject.toml` 添加 `package-data` 配置,打包时包含 locale po/mo 文件,修复 i18n 翻译不生效的问题
|
|
321
|
+
- **补充依赖** — `requirements.txt` 和 `pyproject.toml` 添加缺失的 `django-checkbox-normalize`、`django-tabbed-changeform-admin` 依赖
|
|
322
|
+
- **完善文档** — README 新增完整配置说明章节,涵盖消息队列(MQ)、分布式锁、队列路由、归档、Cron、安全等全部配置项
|
|
323
|
+
|
|
235
324
|
### 0.1.3
|
|
236
325
|
|
|
237
326
|
- **Admin 界面大升级** — 集成 Tabbed ChangeForm 分页签展示字段,CronJob 后台支持直接执行/启用/禁用操作;TaskExecution 列表优化,execution_id 显示前8字符并支持点击复制,重试次数合并显示,全局字段中文翻译
|
|
@@ -67,6 +67,87 @@ DJANGO_SIMPLETASK_LOCK_CONFIG = {
|
|
|
67
67
|
python manage.py migrate django_simpletask5
|
|
68
68
|
```
|
|
69
69
|
|
|
70
|
+
## 配置说明
|
|
71
|
+
|
|
72
|
+
所有配置项均为可选,设有合理的默认值。以下按功能分类说明。
|
|
73
|
+
|
|
74
|
+
### 消息队列(MQ)
|
|
75
|
+
|
|
76
|
+
默认使用内存队列(`memory://`),适合开发调试。生产环境建议切换为 RabbitMQ 或 Redis。
|
|
77
|
+
|
|
78
|
+
```python
|
|
79
|
+
# 方式一:直接指定完整 Broker URL(优先级最高)
|
|
80
|
+
DJANGO_SIMPLETASK_BROKER_URL = 'amqp://guest:guest@127.0.0.1:5672//'
|
|
81
|
+
|
|
82
|
+
# 方式二:分别指定类型和连接参数
|
|
83
|
+
DJANGO_SIMPLETASK_MESSAGE_QUEUE_TYPE = 'rabbitmq' # 'memory' | 'rabbitmq' | 'redis'
|
|
84
|
+
DJANGO_SIMPLETASK_RABBITMQ_HOST = '127.0.0.1'
|
|
85
|
+
DJANGO_SIMPLETASK_RABBITMQ_PORT = 5672
|
|
86
|
+
DJANGO_SIMPLETASK_RABBITMQ_USER = 'guest'
|
|
87
|
+
DJANGO_SIMPLETASK_RABBITMQ_PASSWORD = 'guest'
|
|
88
|
+
|
|
89
|
+
# Redis 作为 MQ 时:
|
|
90
|
+
# DJANGO_SIMPLETASK_MESSAGE_QUEUE_TYPE = 'redis'
|
|
91
|
+
# DJANGO_SIMPLETASK_REDIS_MQ_HOST = '127.0.0.1'
|
|
92
|
+
# DJANGO_SIMPLETASK_REDIS_MQ_PORT = 6379
|
|
93
|
+
# DJANGO_SIMPLETASK_REDIS_MQ_DB = 0
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### 分布式锁
|
|
97
|
+
|
|
98
|
+
```python
|
|
99
|
+
DJANGO_SIMPLETASK_LOCK_CONFIG = {
|
|
100
|
+
'global_lock_engine_class': 'globallock.redis_global_lock.RedisGlobalLock',
|
|
101
|
+
'global_lock_engine_options': {
|
|
102
|
+
'host': '127.0.0.1',
|
|
103
|
+
'port': 6379,
|
|
104
|
+
'db': 0,
|
|
105
|
+
},
|
|
106
|
+
}
|
|
107
|
+
DJANGO_SIMPLETASK_LOCK_TIMEOUT = 600 # 锁超时时间(秒)
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### 队列路由
|
|
111
|
+
|
|
112
|
+
```python
|
|
113
|
+
DJANGO_SIMPLETASK_DEFAULT_QUEUE = 'django_simpletask5.queue.default' # 默认队列
|
|
114
|
+
DJANGO_SIMPLETASK_HIGH_PRIORITY_QUEUE = 'django_simpletask5.queue.high_priority' # 高优先级队列
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### 执行与重试
|
|
118
|
+
|
|
119
|
+
```python
|
|
120
|
+
DJANGO_SIMPLETASK_DEFAULT_MAX_RETRIES = 3 # 默认最大重试次数
|
|
121
|
+
DJANGO_SIMPLETASK_DEFAULT_TIMEOUT_SECONDS = 600 # 默认执行超时时间(秒)
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### 归档
|
|
125
|
+
|
|
126
|
+
```python
|
|
127
|
+
DJANGO_SIMPLETASK_ARCHIVE_PATH = 'django_simpletask5_archives' # 归档文件存储子目录
|
|
128
|
+
DJANGO_SIMPLETASK_ARCHIVE_SALT = 'django-simpletask5-archive' # 归档加密盐值(结合 SECRET_KEY 派生 AES 密钥)
|
|
129
|
+
DJANGO_SIMPLETASK_ARCHIVE_RETENTION_DAYS = 7 # 归档保留天数
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### Cron
|
|
133
|
+
|
|
134
|
+
```python
|
|
135
|
+
DJANGO_SIMPLETASK_CRONJOB_AUTO_SYNC = True # 是否自动将代码注册的 Cron 同步到数据库
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### 安全
|
|
139
|
+
|
|
140
|
+
```python
|
|
141
|
+
# 脚本执行白名单(空列表表示不限制)
|
|
142
|
+
DJANGO_SIMPLETASK_SCRIPT_WHITELIST = ['/path/to/allowed/scripts']
|
|
143
|
+
|
|
144
|
+
# 自定义字段加密(默认使用 django-safe-fields 的默认加密)
|
|
145
|
+
DJANGO_SIMPLETASK_FIELD_CIPHER_CLASS = None # 自定义加密器类
|
|
146
|
+
DJANGO_SIMPLETASK_RESULT_PASSWORD = None # 执行结果加密密码
|
|
147
|
+
DJANGO_SIMPLETASK_ERROR_MSG_PASSWORD = None # 错误信息加密密码
|
|
148
|
+
DJANGO_SIMPLETASK_CONTEXT_PASSWORD = None # 上下文数据加密密码
|
|
149
|
+
```
|
|
150
|
+
|
|
70
151
|
## 快速开始
|
|
71
152
|
|
|
72
153
|
### 1. 定义任务模型
|
|
@@ -195,6 +276,12 @@ Worker 消费消息 → 获取分布式锁 → 加载执行器 → 执行并保
|
|
|
195
276
|
|
|
196
277
|
## Releases
|
|
197
278
|
|
|
279
|
+
### 0.1.4
|
|
280
|
+
|
|
281
|
+
- **修复打包** — `pyproject.toml` 添加 `package-data` 配置,打包时包含 locale po/mo 文件,修复 i18n 翻译不生效的问题
|
|
282
|
+
- **补充依赖** — `requirements.txt` 和 `pyproject.toml` 添加缺失的 `django-checkbox-normalize`、`django-tabbed-changeform-admin` 依赖
|
|
283
|
+
- **完善文档** — README 新增完整配置说明章节,涵盖消息队列(MQ)、分布式锁、队列路由、归档、Cron、安全等全部配置项
|
|
284
|
+
|
|
198
285
|
### 0.1.3
|
|
199
286
|
|
|
200
287
|
- **Admin 界面大升级** — 集成 Tabbed ChangeForm 分页签展示字段,CronJob 后台支持直接执行/启用/禁用操作;TaskExecution 列表优化,execution_id 显示前8字符并支持点击复制,重试次数合并显示,全局字段中文翻译
|
|
@@ -5,8 +5,6 @@ DJANGO_SIMPLETASK_LOCK_TIMEOUT = getattr(settings, 'DJANGO_SIMPLETASK_LOCK_TIMEO
|
|
|
5
5
|
DJANGO_SIMPLETASK_DEFAULT_MAX_RETRIES = getattr(settings, 'DJANGO_SIMPLETASK_DEFAULT_MAX_RETRIES', 3)
|
|
6
6
|
DJANGO_SIMPLETASK_DEFAULT_TIMEOUT_SECONDS = getattr(settings, 'DJANGO_SIMPLETASK_DEFAULT_TIMEOUT_SECONDS', 600)
|
|
7
7
|
|
|
8
|
-
DJANGO_SIMPLETASK_UPDATE_FILTER_POLICY = getattr(settings, 'DJANGO_SIMPLETASK_UPDATE_FILTER_POLICY', 'whitelist')
|
|
9
|
-
|
|
10
8
|
DJANGO_SIMPLETASK_ARCHIVE_PATH = getattr(settings, 'DJANGO_SIMPLETASK_ARCHIVE_PATH', 'django_simpletask5_archives')
|
|
11
9
|
DJANGO_SIMPLETASK_ARCHIVE_SALT = getattr(settings, 'DJANGO_SIMPLETASK_ARCHIVE_SALT', 'django-simpletask5-archive')
|
|
12
10
|
DJANGO_SIMPLETASK_ARCHIVE_RETENTION_DAYS = getattr(settings, 'DJANGO_SIMPLETASK_ARCHIVE_RETENTION_DAYS', 7)
|
|
@@ -0,0 +1,418 @@
|
|
|
1
|
+
# Django SimpleTask5 zh_Hans translation.
|
|
2
|
+
# Copyright (C) 2026 THE PACKAGE'S COPYRIGHT HOLDER
|
|
3
|
+
# This file is distributed under the same license as the PACKAGE package.
|
|
4
|
+
# FIRST AUTHOR <EMAIL@ADDRESS>, 2026.
|
|
5
|
+
#
|
|
6
|
+
msgid ""
|
|
7
|
+
msgstr ""
|
|
8
|
+
"Project-Id-Version: django-simpletask5\n"
|
|
9
|
+
"Report-Msgid-Bugs-To: \n"
|
|
10
|
+
"POT-Creation-Date: 2026-06-10 09:15+0800\n"
|
|
11
|
+
"PO-Revision-Date: 2026-05-31 00:45+0800\n"
|
|
12
|
+
"Last-Translator: \n"
|
|
13
|
+
"Language-Team: \n"
|
|
14
|
+
"Language: zh_Hans\n"
|
|
15
|
+
"MIME-Version: 1.0\n"
|
|
16
|
+
"Content-Type: text/plain; charset=UTF-8\n"
|
|
17
|
+
"Content-Transfer-Encoding: 8bit\n"
|
|
18
|
+
"Plural-Forms: nplurals=1; plural=0;\n"
|
|
19
|
+
|
|
20
|
+
#: django_simpletask5/admin.py:35 django_simpletask5/models.py:209
|
|
21
|
+
#, fuzzy
|
|
22
|
+
#| msgid "ID"
|
|
23
|
+
msgid "UID"
|
|
24
|
+
msgstr "唯一码"
|
|
25
|
+
|
|
26
|
+
#: django_simpletask5/admin.py:40 django_simpletask5/models.py:210
|
|
27
|
+
msgid "Name"
|
|
28
|
+
msgstr "名称"
|
|
29
|
+
|
|
30
|
+
#: django_simpletask5/admin.py:45 django_simpletask5/models.py:114
|
|
31
|
+
#: django_simpletask5/models.py:212
|
|
32
|
+
msgid "Executor class"
|
|
33
|
+
msgstr "执行器类"
|
|
34
|
+
|
|
35
|
+
#: django_simpletask5/admin.py:49 django_simpletask5/models.py:128
|
|
36
|
+
#: django_simpletask5/models.py:215
|
|
37
|
+
msgid "Context"
|
|
38
|
+
msgstr "上下文"
|
|
39
|
+
|
|
40
|
+
#: django_simpletask5/admin.py:57
|
|
41
|
+
msgid ""
|
|
42
|
+
"Supports JSON or YAML format. YAML is more concise and compatible with JSON "
|
|
43
|
+
"standard format."
|
|
44
|
+
msgstr "支持 JSON 或 YAML 格式。YAML 更简洁,且兼容 JSON 标准格式。"
|
|
45
|
+
|
|
46
|
+
#: django_simpletask5/admin.py:95
|
|
47
|
+
msgid "Invalid parameter format. Please use JSON or YAML format."
|
|
48
|
+
msgstr "参数格式无效,请使用 JSON 或 YAML 格式。"
|
|
49
|
+
|
|
50
|
+
#: django_simpletask5/admin.py:126 django_simpletask5/models.py:110
|
|
51
|
+
msgid "Execution ID"
|
|
52
|
+
msgstr "执行流水号"
|
|
53
|
+
|
|
54
|
+
#: django_simpletask5/admin.py:131
|
|
55
|
+
msgid "Copied!"
|
|
56
|
+
msgstr "已复制!"
|
|
57
|
+
|
|
58
|
+
#: django_simpletask5/admin.py:179 django_simpletask5/admin.py:370
|
|
59
|
+
#: django_simpletask5/admin.py:389
|
|
60
|
+
msgid "Basic Info"
|
|
61
|
+
msgstr "基本信息"
|
|
62
|
+
|
|
63
|
+
#: django_simpletask5/admin.py:180
|
|
64
|
+
msgid "Execution Data"
|
|
65
|
+
msgstr "执行数据"
|
|
66
|
+
|
|
67
|
+
#: django_simpletask5/admin.py:181
|
|
68
|
+
msgid "Retry & Timeout"
|
|
69
|
+
msgstr "重试与超时"
|
|
70
|
+
|
|
71
|
+
#: django_simpletask5/admin.py:184 django_simpletask5/dashboards.py:144
|
|
72
|
+
#: django_simpletask5/models.py:106
|
|
73
|
+
msgid "Retry"
|
|
74
|
+
msgstr "重试"
|
|
75
|
+
|
|
76
|
+
#: django_simpletask5/admin.py:217
|
|
77
|
+
msgid "Basic Config"
|
|
78
|
+
msgstr "基本配置"
|
|
79
|
+
|
|
80
|
+
#: django_simpletask5/admin.py:218
|
|
81
|
+
msgid "Advanced Settings"
|
|
82
|
+
msgstr "高级设置"
|
|
83
|
+
|
|
84
|
+
#: django_simpletask5/admin.py:262
|
|
85
|
+
msgid "操作"
|
|
86
|
+
msgstr ""
|
|
87
|
+
|
|
88
|
+
#: django_simpletask5/admin.py:318
|
|
89
|
+
msgid "Reset from code definitions"
|
|
90
|
+
msgstr "从代码重置规则"
|
|
91
|
+
|
|
92
|
+
#: django_simpletask5/admin.py:324
|
|
93
|
+
msgid "Mark as user-modified"
|
|
94
|
+
msgstr "标记为手动修改"
|
|
95
|
+
|
|
96
|
+
#: django_simpletask5/admin.py:330
|
|
97
|
+
msgid "Unmark as user-modified"
|
|
98
|
+
msgstr "取消手动修改标记"
|
|
99
|
+
|
|
100
|
+
#: django_simpletask5/admin.py:336
|
|
101
|
+
msgid "Activate selected tasks"
|
|
102
|
+
msgstr "启用选中任务"
|
|
103
|
+
|
|
104
|
+
#: django_simpletask5/admin.py:342
|
|
105
|
+
msgid "Deactivate selected tasks"
|
|
106
|
+
msgstr "停用选中任务"
|
|
107
|
+
|
|
108
|
+
#: django_simpletask5/admin.py:371
|
|
109
|
+
msgid "Statistics"
|
|
110
|
+
msgstr "统计数据"
|
|
111
|
+
|
|
112
|
+
#: django_simpletask5/apps.py:8
|
|
113
|
+
msgid "Simple Task Manager"
|
|
114
|
+
msgstr "简易任务管理"
|
|
115
|
+
|
|
116
|
+
#: django_simpletask5/core/cronjob_registry.py:83
|
|
117
|
+
#, fuzzy
|
|
118
|
+
#| msgid "Status"
|
|
119
|
+
msgid "Status Check"
|
|
120
|
+
msgstr "状态"
|
|
121
|
+
|
|
122
|
+
#: django_simpletask5/core/cronjob_registry.py:90
|
|
123
|
+
#, fuzzy
|
|
124
|
+
#| msgid "Retry count"
|
|
125
|
+
msgid "Retry Timeout"
|
|
126
|
+
msgstr "重试次数"
|
|
127
|
+
|
|
128
|
+
#: django_simpletask5/core/cronjob_registry.py:97
|
|
129
|
+
#, fuzzy
|
|
130
|
+
#| msgid "Archives"
|
|
131
|
+
msgid "Archive"
|
|
132
|
+
msgstr "归档"
|
|
133
|
+
|
|
134
|
+
#: django_simpletask5/core/cronjob_registry.py:104
|
|
135
|
+
msgid "Purge Expired"
|
|
136
|
+
msgstr ""
|
|
137
|
+
|
|
138
|
+
#: django_simpletask5/core/cronjob_registry.py:111
|
|
139
|
+
#, fuzzy
|
|
140
|
+
#| msgid "Pending / Running"
|
|
141
|
+
msgid "Ping / Pong"
|
|
142
|
+
msgstr "待处理 / 运行中"
|
|
143
|
+
|
|
144
|
+
#: django_simpletask5/dashboards.py:14
|
|
145
|
+
msgid "Task Manager Dashboard"
|
|
146
|
+
msgstr "任务管理仪表盘"
|
|
147
|
+
|
|
148
|
+
#: django_simpletask5/dashboards.py:65
|
|
149
|
+
msgid "Today Executions"
|
|
150
|
+
msgstr "今日执行"
|
|
151
|
+
|
|
152
|
+
#: django_simpletask5/dashboards.py:72
|
|
153
|
+
msgid "Success Rate"
|
|
154
|
+
msgstr "成功率"
|
|
155
|
+
|
|
156
|
+
#: django_simpletask5/dashboards.py:80
|
|
157
|
+
msgid "Workers"
|
|
158
|
+
msgstr "工作进程"
|
|
159
|
+
|
|
160
|
+
#: django_simpletask5/dashboards.py:86
|
|
161
|
+
msgid "Cronjobs"
|
|
162
|
+
msgstr "定时任务"
|
|
163
|
+
|
|
164
|
+
#: django_simpletask5/dashboards.py:96
|
|
165
|
+
msgid "Pending / Running"
|
|
166
|
+
msgstr "待处理 / 运行中"
|
|
167
|
+
|
|
168
|
+
#: django_simpletask5/dashboards.py:103
|
|
169
|
+
msgid "Failed Today"
|
|
170
|
+
msgstr "今日失败"
|
|
171
|
+
|
|
172
|
+
#: django_simpletask5/dashboards.py:110
|
|
173
|
+
msgid "Archives"
|
|
174
|
+
msgstr "归档"
|
|
175
|
+
|
|
176
|
+
#: django_simpletask5/dashboards.py:117
|
|
177
|
+
msgid "Retries"
|
|
178
|
+
msgstr "重试"
|
|
179
|
+
|
|
180
|
+
#: django_simpletask5/dashboards.py:140 django_simpletask5/models.py:102
|
|
181
|
+
msgid "Pending"
|
|
182
|
+
msgstr "待处理"
|
|
183
|
+
|
|
184
|
+
#: django_simpletask5/dashboards.py:141 django_simpletask5/models.py:103
|
|
185
|
+
msgid "Running"
|
|
186
|
+
msgstr "运行中"
|
|
187
|
+
|
|
188
|
+
#: django_simpletask5/dashboards.py:142 django_simpletask5/dashboards.py:256
|
|
189
|
+
#: django_simpletask5/models.py:104
|
|
190
|
+
msgid "Success"
|
|
191
|
+
msgstr "成功"
|
|
192
|
+
|
|
193
|
+
#: django_simpletask5/dashboards.py:143 django_simpletask5/models.py:105
|
|
194
|
+
msgid "Failed"
|
|
195
|
+
msgstr "失败"
|
|
196
|
+
|
|
197
|
+
#: django_simpletask5/dashboards.py:145 django_simpletask5/models.py:107
|
|
198
|
+
msgid "Timeout"
|
|
199
|
+
msgstr "超时"
|
|
200
|
+
|
|
201
|
+
#: django_simpletask5/dashboards.py:154
|
|
202
|
+
msgid "Execution Status Distribution"
|
|
203
|
+
msgstr "执行状态分布"
|
|
204
|
+
|
|
205
|
+
#: django_simpletask5/dashboards.py:167
|
|
206
|
+
msgid "Daily Executions (Last 30 Days)"
|
|
207
|
+
msgstr "每日执行(近30天)"
|
|
208
|
+
|
|
209
|
+
#: django_simpletask5/dashboards.py:191
|
|
210
|
+
msgid "Recent Failed / Timeout Executions"
|
|
211
|
+
msgstr "最近失败/超时执行"
|
|
212
|
+
|
|
213
|
+
#: django_simpletask5/dashboards.py:192 django_simpletask5/dashboards.py:200
|
|
214
|
+
msgid "ID"
|
|
215
|
+
msgstr "唯一码"
|
|
216
|
+
|
|
217
|
+
#: django_simpletask5/dashboards.py:192 django_simpletask5/dashboards.py:200
|
|
218
|
+
msgid "Executor"
|
|
219
|
+
msgstr "执行器"
|
|
220
|
+
|
|
221
|
+
#: django_simpletask5/dashboards.py:192 django_simpletask5/dashboards.py:200
|
|
222
|
+
msgid "Event"
|
|
223
|
+
msgstr "事件"
|
|
224
|
+
|
|
225
|
+
#: django_simpletask5/dashboards.py:192 django_simpletask5/dashboards.py:200
|
|
226
|
+
#: django_simpletask5/dashboards.py:227 django_simpletask5/models.py:115
|
|
227
|
+
msgid "Status"
|
|
228
|
+
msgstr "状态"
|
|
229
|
+
|
|
230
|
+
#: django_simpletask5/dashboards.py:192 django_simpletask5/dashboards.py:200
|
|
231
|
+
msgid "Time"
|
|
232
|
+
msgstr "时间"
|
|
233
|
+
|
|
234
|
+
#: django_simpletask5/dashboards.py:199
|
|
235
|
+
msgid "Recent Executions"
|
|
236
|
+
msgstr "最近执行"
|
|
237
|
+
|
|
238
|
+
#: django_simpletask5/dashboards.py:226
|
|
239
|
+
msgid "Active Workers"
|
|
240
|
+
msgstr "活跃工作进程"
|
|
241
|
+
|
|
242
|
+
#: django_simpletask5/dashboards.py:227
|
|
243
|
+
msgid "Hostname"
|
|
244
|
+
msgstr "主机名"
|
|
245
|
+
|
|
246
|
+
#: django_simpletask5/dashboards.py:227
|
|
247
|
+
msgid "Queue"
|
|
248
|
+
msgstr "队列"
|
|
249
|
+
|
|
250
|
+
#: django_simpletask5/dashboards.py:227
|
|
251
|
+
msgid "Current Execution"
|
|
252
|
+
msgstr "当前执行"
|
|
253
|
+
|
|
254
|
+
#: django_simpletask5/dashboards.py:227
|
|
255
|
+
msgid "Services"
|
|
256
|
+
msgstr "服务"
|
|
257
|
+
|
|
258
|
+
#: django_simpletask5/dashboards.py:261
|
|
259
|
+
msgid "Failed/Timeout"
|
|
260
|
+
msgstr "失败/超时"
|
|
261
|
+
|
|
262
|
+
#: django_simpletask5/models.py:111
|
|
263
|
+
msgid "Task ID"
|
|
264
|
+
msgstr "任务编号"
|
|
265
|
+
|
|
266
|
+
#: django_simpletask5/models.py:112 django_simpletask5/models.py:279
|
|
267
|
+
msgid "Task model"
|
|
268
|
+
msgstr "任务模型"
|
|
269
|
+
|
|
270
|
+
#: django_simpletask5/models.py:113 django_simpletask5/models.py:280
|
|
271
|
+
msgid "Trigger event"
|
|
272
|
+
msgstr "触发事件"
|
|
273
|
+
|
|
274
|
+
#: django_simpletask5/models.py:116
|
|
275
|
+
msgid "Result"
|
|
276
|
+
msgstr "结果"
|
|
277
|
+
|
|
278
|
+
#: django_simpletask5/models.py:117
|
|
279
|
+
msgid "Total tasks count"
|
|
280
|
+
msgstr "总任务数"
|
|
281
|
+
|
|
282
|
+
#: django_simpletask5/models.py:118
|
|
283
|
+
msgid "Done tasks count"
|
|
284
|
+
msgstr "已完成数"
|
|
285
|
+
|
|
286
|
+
#: django_simpletask5/models.py:119
|
|
287
|
+
msgid "Error message"
|
|
288
|
+
msgstr "错误信息"
|
|
289
|
+
|
|
290
|
+
#: django_simpletask5/models.py:120
|
|
291
|
+
msgid "Retry count"
|
|
292
|
+
msgstr "重试次数"
|
|
293
|
+
|
|
294
|
+
#: django_simpletask5/models.py:121
|
|
295
|
+
msgid "Max retries"
|
|
296
|
+
msgstr "最大重试次数"
|
|
297
|
+
|
|
298
|
+
#: django_simpletask5/models.py:122
|
|
299
|
+
msgid "Timeout seconds"
|
|
300
|
+
msgstr "超时秒数"
|
|
301
|
+
|
|
302
|
+
#: django_simpletask5/models.py:123
|
|
303
|
+
msgid "Expire time"
|
|
304
|
+
msgstr "过期时间"
|
|
305
|
+
|
|
306
|
+
#: django_simpletask5/models.py:124
|
|
307
|
+
msgid "Started at"
|
|
308
|
+
msgstr "开始时间"
|
|
309
|
+
|
|
310
|
+
#: django_simpletask5/models.py:125
|
|
311
|
+
msgid "Finished at"
|
|
312
|
+
msgstr "完成时间"
|
|
313
|
+
|
|
314
|
+
#: django_simpletask5/models.py:126 django_simpletask5/models.py:222
|
|
315
|
+
#: django_simpletask5/models.py:265 django_simpletask5/models.py:286
|
|
316
|
+
msgid "Created at"
|
|
317
|
+
msgstr "创建时间"
|
|
318
|
+
|
|
319
|
+
#: django_simpletask5/models.py:127 django_simpletask5/models.py:223
|
|
320
|
+
msgid "Updated at"
|
|
321
|
+
msgstr "更新时间"
|
|
322
|
+
|
|
323
|
+
#: django_simpletask5/models.py:132
|
|
324
|
+
msgid "Task execution"
|
|
325
|
+
msgstr "任务执行"
|
|
326
|
+
|
|
327
|
+
#: django_simpletask5/models.py:133
|
|
328
|
+
msgid "Task executions"
|
|
329
|
+
msgstr "任务执行"
|
|
330
|
+
|
|
331
|
+
#: django_simpletask5/models.py:137
|
|
332
|
+
msgid "TaskExecution"
|
|
333
|
+
msgstr "任务执行"
|
|
334
|
+
|
|
335
|
+
#: django_simpletask5/models.py:211
|
|
336
|
+
msgid "Cron expression"
|
|
337
|
+
msgstr "Cron 表达式"
|
|
338
|
+
|
|
339
|
+
#: django_simpletask5/models.py:213
|
|
340
|
+
msgid "Description"
|
|
341
|
+
msgstr "描述"
|
|
342
|
+
|
|
343
|
+
#: django_simpletask5/models.py:214
|
|
344
|
+
msgid "Active"
|
|
345
|
+
msgstr "启用"
|
|
346
|
+
|
|
347
|
+
#: django_simpletask5/models.py:217
|
|
348
|
+
msgid "Keep manual changes"
|
|
349
|
+
msgstr "保留手动修改"
|
|
350
|
+
|
|
351
|
+
#: django_simpletask5/models.py:219
|
|
352
|
+
msgid ""
|
|
353
|
+
"When checked, the cron job will not be overwritten by automatic code "
|
|
354
|
+
"definition sync. Uncheck to allow re-sync from code definitions. It is "
|
|
355
|
+
"automatically checked when substantive changes are saved via the admin."
|
|
356
|
+
msgstr ""
|
|
357
|
+
"勾选后,该定时任务不会被代码定义自动同步覆盖。当通过管理后台保存实质性变更"
|
|
358
|
+
"时,该选项会自动勾选。取消勾选后,可重新从代码定义同步。"
|
|
359
|
+
|
|
360
|
+
#: django_simpletask5/models.py:221
|
|
361
|
+
msgid "Next run time"
|
|
362
|
+
msgstr "下次运行时间"
|
|
363
|
+
|
|
364
|
+
#: django_simpletask5/models.py:227
|
|
365
|
+
msgid "Cron job"
|
|
366
|
+
msgstr "定时任务"
|
|
367
|
+
|
|
368
|
+
#: django_simpletask5/models.py:228
|
|
369
|
+
msgid "Cron jobs"
|
|
370
|
+
msgstr "定时任务"
|
|
371
|
+
|
|
372
|
+
#: django_simpletask5/models.py:263
|
|
373
|
+
msgid "Archive date"
|
|
374
|
+
msgstr "归档日期"
|
|
375
|
+
|
|
376
|
+
#: django_simpletask5/models.py:264
|
|
377
|
+
msgid "File"
|
|
378
|
+
msgstr "文件"
|
|
379
|
+
|
|
380
|
+
#: django_simpletask5/models.py:269
|
|
381
|
+
msgid "Task execution archive"
|
|
382
|
+
msgstr "任务执行归档"
|
|
383
|
+
|
|
384
|
+
#: django_simpletask5/models.py:270
|
|
385
|
+
msgid "Task execution archives"
|
|
386
|
+
msgstr "任务执行归档"
|
|
387
|
+
|
|
388
|
+
#: django_simpletask5/models.py:278
|
|
389
|
+
msgid "Date"
|
|
390
|
+
msgstr "日期"
|
|
391
|
+
|
|
392
|
+
#: django_simpletask5/models.py:281
|
|
393
|
+
msgid "Total count"
|
|
394
|
+
msgstr "总数"
|
|
395
|
+
|
|
396
|
+
#: django_simpletask5/models.py:282
|
|
397
|
+
msgid "Success count"
|
|
398
|
+
msgstr "成功数"
|
|
399
|
+
|
|
400
|
+
#: django_simpletask5/models.py:283
|
|
401
|
+
msgid "Failed count"
|
|
402
|
+
msgstr "失败数"
|
|
403
|
+
|
|
404
|
+
#: django_simpletask5/models.py:284
|
|
405
|
+
msgid "Timeout count"
|
|
406
|
+
msgstr "超时数"
|
|
407
|
+
|
|
408
|
+
#: django_simpletask5/models.py:285
|
|
409
|
+
msgid "Avg duration (s)"
|
|
410
|
+
msgstr "平均耗时(秒)"
|
|
411
|
+
|
|
412
|
+
#: django_simpletask5/models.py:290
|
|
413
|
+
msgid "Task execution stat"
|
|
414
|
+
msgstr "任务执行统计"
|
|
415
|
+
|
|
416
|
+
#: django_simpletask5/models.py:291
|
|
417
|
+
msgid "Task execution stats"
|
|
418
|
+
msgstr "任务执行统计"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: django-simpletask5
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.4
|
|
4
4
|
Summary: Lightweight async task execution framework for Django
|
|
5
5
|
Author-email: rRR0VrFP <rrr0vrfp@qq.com>
|
|
6
6
|
Maintainer-email: rRR0VrFP <rrr0vrfp@qq.com>
|
|
@@ -27,6 +27,8 @@ Requires-Dist: globallock>=0.1.4
|
|
|
27
27
|
Requires-Dist: django-safe-fields>=0.2.3
|
|
28
28
|
Requires-Dist: django-app-requires>=0.3.6
|
|
29
29
|
Requires-Dist: django-admin-dashboards>=0.1.1
|
|
30
|
+
Requires-Dist: django-checkbox-normalize>=0.2.2
|
|
31
|
+
Requires-Dist: django-tabbed-changeform-admin>=0.1.9
|
|
30
32
|
Requires-Dist: cryptography>=48.0.0
|
|
31
33
|
Requires-Dist: croniter>=6.2.2
|
|
32
34
|
Requires-Dist: requests>=2.34.2
|
|
@@ -104,6 +106,87 @@ DJANGO_SIMPLETASK_LOCK_CONFIG = {
|
|
|
104
106
|
python manage.py migrate django_simpletask5
|
|
105
107
|
```
|
|
106
108
|
|
|
109
|
+
## 配置说明
|
|
110
|
+
|
|
111
|
+
所有配置项均为可选,设有合理的默认值。以下按功能分类说明。
|
|
112
|
+
|
|
113
|
+
### 消息队列(MQ)
|
|
114
|
+
|
|
115
|
+
默认使用内存队列(`memory://`),适合开发调试。生产环境建议切换为 RabbitMQ 或 Redis。
|
|
116
|
+
|
|
117
|
+
```python
|
|
118
|
+
# 方式一:直接指定完整 Broker URL(优先级最高)
|
|
119
|
+
DJANGO_SIMPLETASK_BROKER_URL = 'amqp://guest:guest@127.0.0.1:5672//'
|
|
120
|
+
|
|
121
|
+
# 方式二:分别指定类型和连接参数
|
|
122
|
+
DJANGO_SIMPLETASK_MESSAGE_QUEUE_TYPE = 'rabbitmq' # 'memory' | 'rabbitmq' | 'redis'
|
|
123
|
+
DJANGO_SIMPLETASK_RABBITMQ_HOST = '127.0.0.1'
|
|
124
|
+
DJANGO_SIMPLETASK_RABBITMQ_PORT = 5672
|
|
125
|
+
DJANGO_SIMPLETASK_RABBITMQ_USER = 'guest'
|
|
126
|
+
DJANGO_SIMPLETASK_RABBITMQ_PASSWORD = 'guest'
|
|
127
|
+
|
|
128
|
+
# Redis 作为 MQ 时:
|
|
129
|
+
# DJANGO_SIMPLETASK_MESSAGE_QUEUE_TYPE = 'redis'
|
|
130
|
+
# DJANGO_SIMPLETASK_REDIS_MQ_HOST = '127.0.0.1'
|
|
131
|
+
# DJANGO_SIMPLETASK_REDIS_MQ_PORT = 6379
|
|
132
|
+
# DJANGO_SIMPLETASK_REDIS_MQ_DB = 0
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### 分布式锁
|
|
136
|
+
|
|
137
|
+
```python
|
|
138
|
+
DJANGO_SIMPLETASK_LOCK_CONFIG = {
|
|
139
|
+
'global_lock_engine_class': 'globallock.redis_global_lock.RedisGlobalLock',
|
|
140
|
+
'global_lock_engine_options': {
|
|
141
|
+
'host': '127.0.0.1',
|
|
142
|
+
'port': 6379,
|
|
143
|
+
'db': 0,
|
|
144
|
+
},
|
|
145
|
+
}
|
|
146
|
+
DJANGO_SIMPLETASK_LOCK_TIMEOUT = 600 # 锁超时时间(秒)
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### 队列路由
|
|
150
|
+
|
|
151
|
+
```python
|
|
152
|
+
DJANGO_SIMPLETASK_DEFAULT_QUEUE = 'django_simpletask5.queue.default' # 默认队列
|
|
153
|
+
DJANGO_SIMPLETASK_HIGH_PRIORITY_QUEUE = 'django_simpletask5.queue.high_priority' # 高优先级队列
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### 执行与重试
|
|
157
|
+
|
|
158
|
+
```python
|
|
159
|
+
DJANGO_SIMPLETASK_DEFAULT_MAX_RETRIES = 3 # 默认最大重试次数
|
|
160
|
+
DJANGO_SIMPLETASK_DEFAULT_TIMEOUT_SECONDS = 600 # 默认执行超时时间(秒)
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### 归档
|
|
164
|
+
|
|
165
|
+
```python
|
|
166
|
+
DJANGO_SIMPLETASK_ARCHIVE_PATH = 'django_simpletask5_archives' # 归档文件存储子目录
|
|
167
|
+
DJANGO_SIMPLETASK_ARCHIVE_SALT = 'django-simpletask5-archive' # 归档加密盐值(结合 SECRET_KEY 派生 AES 密钥)
|
|
168
|
+
DJANGO_SIMPLETASK_ARCHIVE_RETENTION_DAYS = 7 # 归档保留天数
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
### Cron
|
|
172
|
+
|
|
173
|
+
```python
|
|
174
|
+
DJANGO_SIMPLETASK_CRONJOB_AUTO_SYNC = True # 是否自动将代码注册的 Cron 同步到数据库
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### 安全
|
|
178
|
+
|
|
179
|
+
```python
|
|
180
|
+
# 脚本执行白名单(空列表表示不限制)
|
|
181
|
+
DJANGO_SIMPLETASK_SCRIPT_WHITELIST = ['/path/to/allowed/scripts']
|
|
182
|
+
|
|
183
|
+
# 自定义字段加密(默认使用 django-safe-fields 的默认加密)
|
|
184
|
+
DJANGO_SIMPLETASK_FIELD_CIPHER_CLASS = None # 自定义加密器类
|
|
185
|
+
DJANGO_SIMPLETASK_RESULT_PASSWORD = None # 执行结果加密密码
|
|
186
|
+
DJANGO_SIMPLETASK_ERROR_MSG_PASSWORD = None # 错误信息加密密码
|
|
187
|
+
DJANGO_SIMPLETASK_CONTEXT_PASSWORD = None # 上下文数据加密密码
|
|
188
|
+
```
|
|
189
|
+
|
|
107
190
|
## 快速开始
|
|
108
191
|
|
|
109
192
|
### 1. 定义任务模型
|
|
@@ -232,6 +315,12 @@ Worker 消费消息 → 获取分布式锁 → 加载执行器 → 执行并保
|
|
|
232
315
|
|
|
233
316
|
## Releases
|
|
234
317
|
|
|
318
|
+
### 0.1.4
|
|
319
|
+
|
|
320
|
+
- **修复打包** — `pyproject.toml` 添加 `package-data` 配置,打包时包含 locale po/mo 文件,修复 i18n 翻译不生效的问题
|
|
321
|
+
- **补充依赖** — `requirements.txt` 和 `pyproject.toml` 添加缺失的 `django-checkbox-normalize`、`django-tabbed-changeform-admin` 依赖
|
|
322
|
+
- **完善文档** — README 新增完整配置说明章节,涵盖消息队列(MQ)、分布式锁、队列路由、归档、Cron、安全等全部配置项
|
|
323
|
+
|
|
235
324
|
### 0.1.3
|
|
236
325
|
|
|
237
326
|
- **Admin 界面大升级** — 集成 Tabbed ChangeForm 分页签展示字段,CronJob 后台支持直接执行/启用/禁用操作;TaskExecution 列表优化,execution_id 显示前8字符并支持点击复制,重试次数合并显示,全局字段中文翻译
|
{django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5.egg-info/SOURCES.txt
RENAMED
|
@@ -30,6 +30,8 @@ django_simpletask5/executors/python_script.py
|
|
|
30
30
|
django_simpletask5/executors/retry_timeout.py
|
|
31
31
|
django_simpletask5/executors/simple_request.py
|
|
32
32
|
django_simpletask5/executors/status_check.py
|
|
33
|
+
django_simpletask5/locale/zh_Hans/LC_MESSAGES/django.mo
|
|
34
|
+
django_simpletask5/locale/zh_Hans/LC_MESSAGES/django.po
|
|
33
35
|
django_simpletask5/management/__init__.py
|
|
34
36
|
django_simpletask5/management/commands/__init__.py
|
|
35
37
|
django_simpletask5/management/commands/django_simpletask_archive.py
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "django-simpletask5"
|
|
7
|
-
version = "0.1.
|
|
7
|
+
version = "0.1.4"
|
|
8
8
|
description = "Lightweight async task execution framework for Django"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = {text = "MIT"}
|
|
@@ -30,6 +30,8 @@ dependencies = [
|
|
|
30
30
|
"django-safe-fields>=0.2.3",
|
|
31
31
|
"django-app-requires>=0.3.6",
|
|
32
32
|
"django-admin-dashboards>=0.1.1",
|
|
33
|
+
"django-checkbox-normalize>=0.2.2",
|
|
34
|
+
"django-tabbed-changeform-admin>=0.1.9",
|
|
33
35
|
"cryptography>=48.0.0",
|
|
34
36
|
"croniter>=6.2.2",
|
|
35
37
|
"requests>=2.34.2",
|
|
@@ -53,6 +55,9 @@ email = "rrr0vrfp@qq.com"
|
|
|
53
55
|
include = ["django_simpletask5*"]
|
|
54
56
|
exclude = ["django_simpletask5_demo*", "django_simpletask5_example*"]
|
|
55
57
|
|
|
58
|
+
[tool.setuptools.package-data]
|
|
59
|
+
django_simpletask5 = ["locale/**/*.po", "locale/**/*.mo"]
|
|
60
|
+
|
|
56
61
|
[tool.pytest.ini_options]
|
|
57
62
|
DJANGO_SETTINGS_MODULE = "django_simpletask5_demo.settings"
|
|
58
63
|
testpaths = ["django_simpletask5_example/tests"]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/core/cronjob_registry.py
RENAMED
|
File without changes
|
{django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/core/executor_scanner.py
RENAMED
|
File without changes
|
|
File without changes
|
{django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/core/message_queue.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/core/worker_registry.py
RENAMED
|
File without changes
|
|
File without changes
|
{django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/executors/__init__.py
RENAMED
|
File without changes
|
{django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/executors/archive.py
RENAMED
|
File without changes
|
|
File without changes
|
{django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/executors/bash_script.py
RENAMED
|
File without changes
|
{django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/executors/loader.py
RENAMED
|
File without changes
|
{django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/executors/ping_pong.py
RENAMED
|
File without changes
|
{django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/executors/python_script.py
RENAMED
|
File without changes
|
{django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/executors/retry_timeout.py
RENAMED
|
File without changes
|
{django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/executors/simple_request.py
RENAMED
|
File without changes
|
{django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/executors/status_check.py
RENAMED
|
File without changes
|
{django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/management/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/migrations/0001_initial.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/migrations/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/services/__init__.py
RENAMED
|
File without changes
|
{django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5/services/archive.py
RENAMED
|
File without changes
|
|
File without changes
|
{django_simpletask5-0.1.3 → django_simpletask5-0.1.4}/django_simpletask5.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|