From 4fd9957becadd6260d74b61e92c0d5a644f014f7 Mon Sep 17 00:00:00 2001 From: ibuler Date: Wed, 20 Feb 2019 17:51:53 +0800 Subject: [PATCH] =?UTF-8?q?[Update]=20=E4=BF=AE=E6=94=B9celery=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/common/api.py | 41 ++++++++++++----------- apps/locale/zh/LC_MESSAGES/django.mo | Bin 61912 -> 61966 bytes apps/locale/zh/LC_MESSAGES/django.po | 48 +++++++++++++++------------ apps/ops/api/celery.py | 7 ++++ 4 files changed, 55 insertions(+), 41 deletions(-) diff --git a/apps/common/api.py b/apps/common/api.py index 6a2017cd4..cf3855b60 100644 --- a/apps/common/api.py +++ b/apps/common/api.py @@ -199,6 +199,8 @@ class LogTailApi(generics.RetrieveAPIView): buff_size = 1024 * 10 serializer_class = OutputSerializer end = False + mark = '' + log_path = '' def is_file_finish_write(self): return True @@ -206,6 +208,9 @@ class LogTailApi(generics.RetrieveAPIView): def get_log_path(self): raise NotImplementedError() + def get_no_file_message(self, request): + return 'Not found the log' + def filter_line(self, line): """ 过滤行,可能替换一些信息 @@ -214,27 +219,14 @@ class LogTailApi(generics.RetrieveAPIView): """ return line - def get(self, request, *args, **kwargs): - mark = request.query_params.get("mark") or str(uuid.uuid4()) - log_path = self.get_log_path() - - if not log_path or not os.path.isfile(log_path): - if self.is_file_finish_write(): - return Response({ - "data": 'Not found the log', - 'end': True, - 'mark': mark - }) - else: - return Response({"data": "Waiting...\r\n"}, status=200) - - with open(log_path, 'r') as f: - offset = cache.get(mark, 0) + def read_from_file(self): + with open(self.log_path, 'r') as f: + offset = cache.get(self.mark, 0) f.seek(offset) data = f.read(self.buff_size).replace('\n', '\r\n') - mark = str(uuid.uuid4()) - cache.set(mark, f.tell(), 5) + new_mark = str(uuid.uuid4()) + cache.set(new_mark, f.tell(), 5) if data == '' and self.is_file_finish_write(): self.end = True @@ -244,4 +236,15 @@ class LogTailApi(generics.RetrieveAPIView): if line == '': continue _data += new_line + '\r\n' - return Response({"data": _data, 'end': self.end, 'mark': mark}) + return _data, self.end, new_mark + + def get(self, request, *args, **kwargs): + self.mark = request.query_params.get("mark") or str(uuid.uuid4()) + self.log_path = self.get_log_path() + + if not self.log_path or not os.path.isfile(self.log_path): + msg = self.get_no_file_message(self.request) + return Response({"data": msg}, status=200) + + data, end, new_mark = self.read_from_file() + return Response({"data": data, 'end': end, 'mark': new_mark}) diff --git a/apps/locale/zh/LC_MESSAGES/django.mo b/apps/locale/zh/LC_MESSAGES/django.mo index 33091ed2ff7a38ec8bd65ef51693f33807fbc510..d57d38faf3e5fb4c5d0d12efe7f7b903f688b151 100644 GIT binary patch delta 14108 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 diff --git a/apps/locale/zh/LC_MESSAGES/django.po b/apps/locale/zh/LC_MESSAGES/django.po index 8502e7c3d..28c411839 100644 --- a/apps/locale/zh/LC_MESSAGES/django.po +++ b/apps/locale/zh/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Jumpserver 0.3.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-01-28 12:56+0800\n" +"POT-Creation-Date: 2019-02-20 16:46+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: ibuler \n" "Language-Team: Jumpserver team\n" @@ -21,11 +21,11 @@ msgstr "" msgid "You can't update the root node name" msgstr "不能修改根节点名称" -#: assets/api/node.py:281 +#: assets/api/node.py:282 msgid "Update node asset hardware information: {}" msgstr "更新节点资产硬件信息: {}" -#: assets/api/node.py:295 +#: assets/api/node.py:296 msgid "Test if the assets under the node are connectable: {}" msgstr "测试节点下资产是否可连接: {}" @@ -764,48 +764,48 @@ msgstr "获取资产信息失败:{}" msgid "Update some assets hardware info" msgstr "更新资产硬件信息" -#: assets/tasks.py:136 +#: assets/tasks.py:134 msgid "Update asset hardware info: {}" msgstr "更新资产硬件信息: {}" -#: assets/tasks.py:161 +#: assets/tasks.py:159 msgid "Test assets connectivity" msgstr "测试资产可连接性" -#: assets/tasks.py:185 +#: assets/tasks.py:183 msgid "Test assets connectivity: {}" msgstr "测试资产可连接性: {}" -#: assets/tasks.py:224 +#: assets/tasks.py:225 msgid "Test admin user connectivity period: {}" msgstr "定期测试管理账号可连接性: {}" -#: assets/tasks.py:231 +#: assets/tasks.py:232 msgid "Test admin user connectivity: {}" msgstr "测试管理行号可连接性: {}" -#: assets/tasks.py:270 +#: assets/tasks.py:271 msgid "Test system user connectivity: {}" msgstr "测试系统用户可连接性: {}" -#: assets/tasks.py:277 +#: assets/tasks.py:278 msgid "Test system user connectivity: {} => {}" msgstr "测试系统用户可连接性: {} => {}" -#: assets/tasks.py:290 +#: assets/tasks.py:291 msgid "Test system user connectivity period: {}" msgstr "定期测试系统用户可连接性: {}" -#: assets/tasks.py:362 +#: assets/tasks.py:363 msgid "" "Push system user task skip, auto push not enable or protocol is not ssh: {}" msgstr "推送系统用户任务跳过,自动推送没有打开,或协议不是ssh: {}" -#: assets/tasks.py:382 assets/tasks.py:396 +#: assets/tasks.py:383 assets/tasks.py:397 msgid "Push system users to assets: {}" msgstr "推送系统用户到入资产: {}" -#: assets/tasks.py:388 +#: assets/tasks.py:389 msgid "Push system users to asset: {} => {}" msgstr "推送系统用户到入资产: {} => {}" @@ -1092,7 +1092,7 @@ msgstr "选择节点" #: assets/templates/assets/admin_user_detail.html:100 #: assets/templates/assets/asset_detail.html:208 -#: assets/templates/assets/asset_list.html:635 +#: assets/templates/assets/asset_list.html:636 #: assets/templates/assets/cmd_filter_detail.html:106 #: assets/templates/assets/system_user_asset.html:112 #: assets/templates/assets/system_user_detail.html:182 @@ -1312,7 +1312,7 @@ msgstr "重命名成功" msgid "Rename failed, do not change the root node name" msgstr "重命名失败,不能更改root节点的名称" -#: assets/templates/assets/asset_list.html:629 +#: assets/templates/assets/asset_list.html:630 #: assets/templates/assets/system_user_list.html:137 #: users/templates/users/user_detail.html:382 #: users/templates/users/user_detail.html:408 @@ -1322,11 +1322,11 @@ msgstr "重命名失败,不能更改root节点的名称" msgid "Are you sure?" msgstr "你确认吗?" -#: assets/templates/assets/asset_list.html:630 +#: assets/templates/assets/asset_list.html:631 msgid "This will delete the selected assets !!!" msgstr "删除选择资产" -#: assets/templates/assets/asset_list.html:633 +#: assets/templates/assets/asset_list.html:634 #: assets/templates/assets/system_user_list.html:141 #: common/templates/common/terminal_setting.html:163 #: users/templates/users/user_detail.html:386 @@ -1339,16 +1339,16 @@ msgstr "删除选择资产" msgid "Cancel" msgstr "取消" -#: assets/templates/assets/asset_list.html:639 +#: assets/templates/assets/asset_list.html:640 msgid "Asset Deleted." msgstr "已被删除" -#: assets/templates/assets/asset_list.html:640 -#: assets/templates/assets/asset_list.html:645 +#: assets/templates/assets/asset_list.html:641 +#: assets/templates/assets/asset_list.html:646 msgid "Asset Delete" msgstr "删除" -#: assets/templates/assets/asset_list.html:644 +#: assets/templates/assets/asset_list.html:645 msgid "Asset Deleting failed." msgstr "删除失败" @@ -2315,6 +2315,10 @@ msgstr "" "div>
如果你看到了这个页面,证明你访问的不是nginx监听的端口,祝你好运" +#: ops/api/celery.py:54 +msgid "Waiting task start" +msgstr "等待任务开始" + #: ops/models/adhoc.py:38 msgid "Interval" msgstr "间隔" diff --git a/apps/ops/api/celery.py b/apps/ops/api/celery.py index caffff601..6be58770f 100644 --- a/apps/ops/api/celery.py +++ b/apps/ops/api/celery.py @@ -4,6 +4,7 @@ import os import re +from django.utils.translation import ugettext as _ from celery.result import AsyncResult from rest_framework import generics @@ -46,6 +47,12 @@ class CeleryTaskLogApi(LogTailApi): def is_file_finish_write(self): return self.task.ready() + def get_no_file_message(self, request): + if self.mark == 'undefined': + return '.' + else: + return _('Waiting task start') + class CeleryResultApi(generics.RetrieveAPIView): permission_classes = (IsValidUser,)