Skip to content

Commit

Permalink
fix: config bug
Browse files Browse the repository at this point in the history
  • Loading branch information
fcfangcc committed Mar 21, 2023
1 parent 7d05244 commit 521e5df
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 14 deletions.
25 changes: 18 additions & 7 deletions pyxxl/logger/disk.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import logging
import os
import time
import weakref
from contextlib import asynccontextmanager
from logging import FileHandler
from pathlib import Path
Expand All @@ -23,19 +24,29 @@
logger = logging.getLogger(__name__)


def _close_file_stream(_logger: logging.Logger) -> None:
# !!! StreamHandler remove会有问题,需要判断是否是FileHandler
for h in _logger.handlers:
if isinstance(h, logging.FileHandler):
logger.debug("close file log object: {}.".format(h))
h.close()
_logger.removeHandler(h)


class XXLogger:
"""为了可以关闭文件写入流"""

def __init__(self, logger: logging.Logger) -> None:
self._logger = logger

def __del__(self) -> None:
# !!! StreamHandler remove会有问题,需要判断是否是FileHandler
for h in self._logger.handlers:
if isinstance(h, logging.FileHandler):
logger.debug("close file log object: {}.".format(h))
h.close()
self._logger.removeHandler(h)
self._finalizer = weakref.finalize(self, _close_file_stream, self._logger)

def remove(self) -> None:
self._finalizer()

@property
def removed(self) -> bool:
return not self._finalizer.alive

def __getattr__(self, name: str) -> Any:
if name in ["info", "error", "warning", "debug", "exception", "handlers"]:
Expand Down
6 changes: 5 additions & 1 deletion pyxxl/setting.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,11 @@ def __post_init__(self) -> None:
env_val = os.getenv(param.name) or os.getenv(param.name.upper())
if env_val is not None:
logger.debug("Get [%s] config from env: [%s]" % (param.name, env_val))
setattr(self, param.name, env_val)
if param.annotation is bool:
real_value = env_val in ["true", "True"]
else:
real_value = param.annotation(env_val)
setattr(self, param.name, real_value)

self._valid_xxl_admin_baseurl()
self._valid_executor_app_name()
Expand Down
3 changes: 1 addition & 2 deletions pyxxl/tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,6 @@ def event_loop() -> Generator:
ids=["disk", "redis"],
)
def executor(request: Any) -> Executor:
print(type(request))
return Executor(MokeXXL("http://localhost:8080/xxl-job-admin/api/"), request.param, handler=None)


Expand All @@ -62,7 +61,7 @@ def web_app(executor: Executor) -> Application:

@runner.handler.register(name="demoJobHandler")
async def test_task() -> None:
await asyncio.sleep(20)
await asyncio.sleep(10)

@runner.handler.register(name="demoJobHandlerSync")
def test_task_sync() -> None:
Expand Down
2 changes: 0 additions & 2 deletions pyxxl/tests/test_handler.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import asyncio
import time
from concurrent.futures import ThreadPoolExecutor

import pytest

Expand Down Expand Up @@ -29,7 +28,6 @@ async def _handler():

@pytest.mark.asyncio
async def test_sync_timeout_ok(event_loop):
ThreadPoolExecutor(max_workers=10)
r = []

def _handler():
Expand Down
8 changes: 6 additions & 2 deletions pyxxl/tests/test_setting.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,14 @@ def test_config():
# from env
os.environ["executor_app_name"] = "fromenv"
os.environ["XXL_ADMIN_BASEURL"] = TEST_ADMIN_URL
os.environ["GRACEFUL_TIMEOUT"] = "500"
os.environ["GRACEFUL_CLOSE"] = "False"

setting = ExecutorConfig(xxl_admin_baseurl="", executor_app_name="")
setting.executor_app_name = "fromenv"
setting.xxl_admin_baseurl = TEST_ADMIN_URL
assert setting.executor_app_name == "fromenv"
assert setting.xxl_admin_baseurl == TEST_ADMIN_URL
assert setting.graceful_timeout == 500
assert setting.graceful_close is False
os.environ.clear()


Expand Down

0 comments on commit 521e5df

Please sign in to comment.