21:36:56 - article_server - INFO - 日志系统已启动 - 记录器: article_server 21:36:56 - article_server - INFO - 主日志文件: logs/article_server.log 21:36:56 - article_server - INFO - 错误日志文件: logs/article_error.log 21:36:56 - article_server - INFO - 日志保留策略: 每天午夜分割,主日志保留3天 21:36:56 - article_server - INFO - 错误日志保留策略: 每天午夜分割,保留9天 Traceback (most recent call last): File "/home/work/keyword_crawl/venv/bin/gunicorn", line 7, in sys.exit(run()) ^^^^^ File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/gunicorn/app/wsgiapp.py", line 66, in run WSGIApplication("%(prog)s [OPTIONS] [APP_MODULE]", prog=prog).run() File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/gunicorn/app/base.py", line 235, in run super().run() File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/gunicorn/app/base.py", line 71, in run Arbiter(self).run() ^^^^^^^^^^^^^ File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/gunicorn/arbiter.py", line 57, in __init__ self.setup(app) File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/gunicorn/arbiter.py", line 117, in setup self.app.wsgi() File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/gunicorn/app/base.py", line 66, in wsgi self.callable = self.load() ^^^^^^^^^^^ File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/gunicorn/app/wsgiapp.py", line 57, in load return self.load_wsgiapp() ^^^^^^^^^^^^^^^^^^^ File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/gunicorn/app/wsgiapp.py", line 47, in load_wsgiapp return util.import_app(self.app_uri) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/work/keyword_crawl/venv/lib/python3.12/site-packages/gunicorn/util.py", line 370, in import_app mod = importlib.import_module(module) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module return _bootstrap._gcd_import(name[level:], package, level) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "", line 1387, in _gcd_import File "", line 1360, in _find_and_load File "", line 1331, in _find_and_load_unlocked File "", line 935, in _load_unlocked File "", line 995, in exec_module File "", line 488, in _call_with_frames_removed File "/home/work/ai_wht/flask_wht_server_api.py", line 30, in from image_routes import image_bp File "/home/work/ai_wht/image_routes.py", line 19, in from oss_image import SyncImageToOSS File "/home/work/ai_wht/oss_image.py", line 10, in import oss2 ModuleNotFoundError: No module named 'oss2'