+[2025-08-24 23:37:49 +0800] [27839] [INFO] Worker exiting (pid: 27839)
+[2025-08-24 23:38:10 +0800] [27841] [INFO] Worker exiting (pid: 27841)
+[2025-08-24 23:38:39 +0800] [22763] [INFO] Starting gunicorn 23.0.0
+[2025-08-24 23:38:39 +0800] [22763] [INFO] Gunicorn服务器启动中...
+[2025-08-24 23:38:39 +0800] [22763] [INFO] Listening at: http://0.0.0.0:5002 (22763)
+[2025-08-24 23:38:39 +0800] [22763] [INFO] Using worker: sync
+[2025-08-24 23:38:39 +0800] [22763] [INFO] 工作进程 [booting] 即将启动
+[2025-08-24 23:38:39 +0800] [22780] [INFO] Booting worker with pid: 22780
+[2025-08-24 23:38:39 +0800] [22780] [INFO] 工作进程 22780 已启动
+[2025-08-24 23:38:39 +0800] [22780] [INFO] 工作进程 22780 初始化完成
+[2025-08-24 23:38:39 +0800] [22763] [INFO] 工作进程 [booting] 即将启动
+[2025-08-24 23:38:39 +0800] [22781] [INFO] Booting worker with pid: 22781
+[2025-08-24 23:38:39 +0800] [22781] [INFO] 工作进程 22781 已启动
+[2025-08-24 23:38:39 +0800] [22781] [INFO] 工作进程 22781 初始化完成
+[2025-08-24 23:38:39 +0800] [22763] [INFO] 工作进程 [booting] 即将启动
+[2025-08-24 23:38:39 +0800] [22782] [INFO] Booting worker with pid: 22782
+[2025-08-24 23:38:39 +0800] [22782] [INFO] 工作进程 22782 已启动
+[2025-08-24 23:38:39 +0800] [22782] [INFO] 工作进程 22782 初始化完成
+[2025-08-24 23:38:39 +0800] [22763] [INFO] 工作进程 [booting] 即将启动
+[2025-08-24 23:38:39 +0800] [22783] [INFO] Booting worker with pid: 22783
+[2025-08-24 23:38:39 +0800] [22783] [INFO] 工作进程 22783 已启动
+[2025-08-24 23:38:39 +0800] [22783] [INFO] 工作进程 22783 初始化完成
+[2025-08-24 23:38:39 +0800] [22763] [INFO] 工作进程 [booting] 即将启动
+[2025-08-24 23:38:39 +0800] [22784] [INFO] Booting worker with pid: 22784
+[2025-08-24 23:38:39 +0800] [22784] [INFO] 工作进程 22784 已启动
+[2025-08-24 23:38:39 +0800] [22784] [INFO] 工作进程 22784 初始化完成
+[2025-08-24 23:39:10 +0800] [22763] [CRITICAL] WORKER TIMEOUT (pid:22782)
+[2025-08-24 23:39:10 +0800] [22782] [INFO] 工作进程 22782 异常退出
+[2025-08-24 23:39:10 +0800] [22782] [ERROR] Error handling request (no URI read)
+Traceback (most recent call last):
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/workers/sync.py", line 133, in handle
+ req = next(parser)
+ ^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/parser.py", line 41, in __next__
+ self.mesg = self.mesg_class(self.cfg, self.unreader, self.source_addr, self.req_count)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 259, in __init__
+ super().__init__(cfg, unreader, peer_addr)
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 60, in __init__
+ unused = self.parse(self.unreader)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 271, in parse
+ self.get_data(unreader, buf, stop=True)
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 262, in get_data
+ data = unreader.read()
+ ^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/unreader.py", line 36, in read
+ d = self.chunk()
+ ^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/unreader.py", line 63, in chunk
+ return self.sock.recv(self.mxchunk)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/workers/base.py", line 204, in handle_abort
+ sys.exit(1)
+SystemExit: 1
+[2025-08-24 23:39:10 +0800] [22782] [INFO] Worker exiting (pid: 22782)
+[2025-08-24 23:39:10 +0800] [22763] [CRITICAL] WORKER TIMEOUT (pid:22780)
+[2025-08-24 23:39:10 +0800] [22780] [INFO] 工作进程 22780 异常退出
+[2025-08-24 23:39:10 +0800] [22763] [INFO] 工作进程 [booting] 即将启动
+[2025-08-24 23:39:10 +0800] [22780] [ERROR] Error handling request (no URI read)
+Traceback (most recent call last):
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/workers/sync.py", line 133, in handle
+ req = next(parser)
+ ^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/parser.py", line 41, in __next__
+ self.mesg = self.mesg_class(self.cfg, self.unreader, self.source_addr, self.req_count)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 259, in __init__
+ super().__init__(cfg, unreader, peer_addr)
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 60, in __init__
+ unused = self.parse(self.unreader)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 271, in parse
+ self.get_data(unreader, buf, stop=True)
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 262, in get_data
+ data = unreader.read()
+ ^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/unreader.py", line 36, in read
+ d = self.chunk()
+ ^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/unreader.py", line 63, in chunk
+ return self.sock.recv(self.mxchunk)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/workers/base.py", line 204, in handle_abort
+ sys.exit(1)
+SystemExit: 1
+[2025-08-24 23:39:10 +0800] [22780] [INFO] Worker exiting (pid: 22780)
+[2025-08-24 23:39:10 +0800] [23005] [INFO] Booting worker with pid: 23005
+[2025-08-24 23:39:10 +0800] [23005] [INFO] 工作进程 23005 已启动
+[2025-08-24 23:39:10 +0800] [23005] [INFO] 工作进程 23005 初始化完成
+[2025-08-24 23:39:10 +0800] [22763] [INFO] 工作进程 [booting] 即将启动
+[2025-08-24 23:39:10 +0800] [23009] [INFO] Booting worker with pid: 23009
+[2025-08-24 23:39:10 +0800] [23009] [INFO] 工作进程 23009 已启动
+[2025-08-24 23:39:10 +0800] [23009] [INFO] 工作进程 23009 初始化完成
+[2025-08-24 23:59:39 +0800] [22763] [CRITICAL] WORKER TIMEOUT (pid:22784)
+[2025-08-24 23:59:39 +0800] [22784] [INFO] 工作进程 22784 异常退出
+[2025-08-24 23:59:39 +0800] [22784] [ERROR] Error handling request (no URI read)
+Traceback (most recent call last):
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/workers/sync.py", line 133, in handle
+ req = next(parser)
+ ^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/parser.py", line 41, in __next__
+ self.mesg = self.mesg_class(self.cfg, self.unreader, self.source_addr, self.req_count)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 259, in __init__
+ super().__init__(cfg, unreader, peer_addr)
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 60, in __init__
+ unused = self.parse(self.unreader)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 271, in parse
+ self.get_data(unreader, buf, stop=True)
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 262, in get_data
+ data = unreader.read()
+ ^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/unreader.py", line 36, in read
+ d = self.chunk()
+ ^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/unreader.py", line 63, in chunk
+ return self.sock.recv(self.mxchunk)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/workers/base.py", line 204, in handle_abort
+ sys.exit(1)
+SystemExit: 1
+[2025-08-24 23:59:39 +0800] [22784] [INFO] Worker exiting (pid: 22784)
+[2025-08-24 23:59:39 +0800] [22763] [INFO] 工作进程 [booting] 即将启动
+[2025-08-24 23:59:39 +0800] [27408] [INFO] Booting worker with pid: 27408
+[2025-08-24 23:59:39 +0800] [27408] [INFO] 工作进程 27408 已启动
+[2025-08-24 23:59:39 +0800] [27408] [INFO] 工作进程 27408 初始化完成
+[2025-08-25 07:14:48 +0800] [22763] [CRITICAL] WORKER TIMEOUT (pid:23005)
+[2025-08-25 07:14:48 +0800] [23005] [INFO] 工作进程 23005 异常退出
+[2025-08-25 07:14:48 +0800] [23005] [ERROR] Error handling request (no URI read)
+Traceback (most recent call last):
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/workers/sync.py", line 133, in handle
+ req = next(parser)
+ ^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/parser.py", line 41, in __next__
+ self.mesg = self.mesg_class(self.cfg, self.unreader, self.source_addr, self.req_count)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 259, in __init__
+ super().__init__(cfg, unreader, peer_addr)
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 60, in __init__
+ unused = self.parse(self.unreader)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 271, in parse
+ self.get_data(unreader, buf, stop=True)
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 262, in get_data
+ data = unreader.read()
+ ^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/unreader.py", line 36, in read
+ d = self.chunk()
+ ^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/unreader.py", line 63, in chunk
+ return self.sock.recv(self.mxchunk)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/workers/base.py", line 204, in handle_abort
+ sys.exit(1)
+SystemExit: 1
+[2025-08-25 07:14:48 +0800] [23005] [INFO] Worker exiting (pid: 23005)
+[2025-08-25 07:14:48 +0800] [22763] [INFO] 工作进程 [booting] 即将启动
+[2025-08-25 07:14:48 +0800] [28322] [INFO] Booting worker with pid: 28322
+[2025-08-25 07:14:48 +0800] [28322] [INFO] 工作进程 28322 已启动
+[2025-08-25 07:14:48 +0800] [28322] [INFO] 工作进程 28322 初始化完成
+[2025-08-25 12:01:59 +0800] [28322] [WARNING] Invalid request from ip=3.132.23.201: Invalid HTTP request line: 'SSH-2.0-Go'
+[2025-08-25 19:11:08 +0800] [22781] [WARNING] Invalid request from ip=67.205.162.22: Invalid HTTP request line: ''
+[2025-08-25 19:55:00 +0800] [23009] [WARNING] Invalid request from ip=79.124.49.210: Invalid HTTP request line: '\x03\x00\x00/*à\x00\x00\x00\x00\x00Cookie: mstshash=Administr'
+[2025-08-25 20:07:28 +0800] [22783] [WARNING] Invalid request from ip=206.168.34.124: Invalid HTTP Version: (2, 0)
+[2025-08-25 20:07:41 +0800] [22783] [WARNING] Invalid request from ip=206.168.34.124: Invalid HTTP Version: (2, 0)
+[2025-08-25 22:23:15 +0800] [22763] [CRITICAL] WORKER TIMEOUT (pid:23009)
+[2025-08-25 22:23:15 +0800] [23009] [INFO] 工作进程 23009 异常退出
+[2025-08-25 22:23:15 +0800] [23009] [ERROR] Error handling request (no URI read)
+Traceback (most recent call last):
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/workers/sync.py", line 133, in handle
+ req = next(parser)
+ ^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/parser.py", line 41, in __next__
+ self.mesg = self.mesg_class(self.cfg, self.unreader, self.source_addr, self.req_count)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 259, in __init__
+ super().__init__(cfg, unreader, peer_addr)
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 60, in __init__
+ unused = self.parse(self.unreader)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 271, in parse
+ self.get_data(unreader, buf, stop=True)
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 262, in get_data
+ data = unreader.read()
+ ^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/unreader.py", line 36, in read
+ d = self.chunk()
+ ^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/unreader.py", line 63, in chunk
+ return self.sock.recv(self.mxchunk)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/workers/base.py", line 204, in handle_abort
+ sys.exit(1)
+SystemExit: 1
+[2025-08-25 22:23:15 +0800] [23009] [INFO] Worker exiting (pid: 23009)
+[2025-08-25 22:23:15 +0800] [22763] [INFO] 工作进程 [booting] 即将启动
+[2025-08-25 22:23:15 +0800] [9968] [INFO] Booting worker with pid: 9968
+[2025-08-25 22:23:15 +0800] [9968] [INFO] 工作进程 9968 已启动
+[2025-08-25 22:23:15 +0800] [9968] [INFO] 工作进程 9968 初始化完成
+[2025-08-26 09:25:37 +0800] [22763] [CRITICAL] WORKER TIMEOUT (pid:9968)
+[2025-08-26 09:25:37 +0800] [9968] [INFO] 工作进程 9968 异常退出
+[2025-08-26 09:25:37 +0800] [9968] [ERROR] Error handling request /
+Traceback (most recent call last):
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/workers/sync.py", line 134, in handle
+ self.handle_request(listener, req, client, addr)
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/workers/sync.py", line 177, in handle_request
+ respiter = self.wsgi(environ, resp.start_response)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 1536, in __call__
+ return self.wsgi_app(environ, start_response)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 1511, in wsgi_app
+ response = self.full_dispatch_request()
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 917, in full_dispatch_request
+ rv = self.dispatch_request()
+ ^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 902, in dispatch_request
+ return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return]
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/aitsc/src/flask_prompt_master/routes/routes.py", line 139, in index
+ return render_template('generate.html', form=form, prompt=prompt, templates=templates,
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/templating.py", line 150, in render_template
+ return _render(app, template, context)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/templating.py", line 131, in _render
+ rv = template.render(context)
+ ^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/jinja2/environment.py", line 1293, in render
+ return self.environment.concat(self.root_render_func(ctx)) # type: ignore
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/aitsc/src/flask_prompt_master/templates/generate.html", line 15, in root
+
+ File "/home/renjianbo/aitsc/src/flask_prompt_master/templates/base.html", line 37, in root
+ }
+ File "/home/renjianbo/aitsc/src/flask_prompt_master/templates/generate.html", line 99, in block_content
+
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/jinja2/environment.py", line 490, in getattr
+ return getattr(obj, attribute)
+ ^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/orm/attributes.py", line 569, in __get__
+ return self.impl.get(state, dict_) # type: ignore[no-any-return]
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/orm/attributes.py", line 1096, in get
+ value = self._fire_loader_callables(state, key, passive)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/orm/attributes.py", line 1126, in _fire_loader_callables
+ return state._load_expired(state, passive)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/orm/state.py", line 803, in _load_expired
+ self.manager.expired_attribute_loader(self, toload, passive)
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/orm/loading.py", line 1674, in load_scalar_attributes
+ result = load_on_ident(
+ ^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/orm/loading.py", line 510, in load_on_ident
+ return load_on_pk_identity(
+ ^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/orm/loading.py", line 695, in load_on_pk_identity
+ session.execute(
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2365, in execute
+ return self._execute_internal(
+ ^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2251, in _execute_internal
+ result: Result[Any] = compile_state_cls.orm_execute_statement(
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/orm/context.py", line 306, in orm_execute_statement
+ result = conn.execute(
+ ^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
+ return meth(
+ ^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
+ return connection._execute_clauseelement(
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
+ ret = self._execute_context(
+ ^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
+ return self._exec_single_context(
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
+ self._handle_dbapi_exception(
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 2358, in _handle_dbapi_exception
+ raise exc_info[1].with_traceback(exc_info[2])
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
+ self.dialect.do_execute(
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
+ cursor.execute(statement, parameters)
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/cursors.py", line 153, in execute
+ result = self._query(query)
+ ^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/cursors.py", line 322, in _query
+ conn.query(q)
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/connections.py", line 563, in query
+ self._affected_rows = self._read_query_result(unbuffered=unbuffered)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/connections.py", line 825, in _read_query_result
+ result.read()
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/connections.py", line 1199, in read
+ first_packet = self.connection._read_packet()
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/connections.py", line 744, in _read_packet
+ packet_header = self._read_bytes(4)
+ ^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/connections.py", line 782, in _read_bytes
+ data = self._rfile.read(num_bytes)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/socket.py", line 720, in readinto
+ return self._sock.recv_into(b)
+ ^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/workers/base.py", line 204, in handle_abort
+ sys.exit(1)
+SystemExit: 1
+[2025-08-26 09:25:37 +0800] [9968] [INFO] Worker exiting (pid: 9968)
+[2025-08-26 09:25:37 +0800] [22763] [INFO] 工作进程 [booting] 即将启动
+[2025-08-26 09:25:37 +0800] [26650] [INFO] Booting worker with pid: 26650
+[2025-08-26 09:25:37 +0800] [26650] [INFO] 工作进程 26650 已启动
+[2025-08-26 09:25:37 +0800] [26650] [INFO] 工作进程 26650 初始化完成
+[2025-08-26 09:26:05 +0800] [22763] [CRITICAL] WORKER TIMEOUT (pid:22781)
+[2025-08-26 09:26:05 +0800] [22781] [INFO] 工作进程 22781 异常退出
+[2025-08-26 09:26:05 +0800] [22781] [ERROR] Error handling request /
+Traceback (most recent call last):
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/workers/sync.py", line 134, in handle
+ self.handle_request(listener, req, client, addr)
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/workers/sync.py", line 177, in handle_request
+ respiter = self.wsgi(environ, resp.start_response)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 1536, in __call__
+ return self.wsgi_app(environ, start_response)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 1511, in wsgi_app
+ response = self.full_dispatch_request()
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 917, in full_dispatch_request
+ rv = self.dispatch_request()
+ ^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 902, in dispatch_request
+ return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return]
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/aitsc/src/flask_prompt_master/routes/routes.py", line 139, in index
+ return render_template('generate.html', form=form, prompt=prompt, templates=templates,
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/templating.py", line 150, in render_template
+ return _render(app, template, context)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/templating.py", line 131, in _render
+ rv = template.render(context)
+ ^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/jinja2/environment.py", line 1293, in render
+ return self.environment.concat(self.root_render_func(ctx)) # type: ignore
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/aitsc/src/flask_prompt_master/templates/generate.html", line 15, in root
+
+ File "/home/renjianbo/aitsc/src/flask_prompt_master/templates/base.html", line 37, in root
+ }
+ File "/home/renjianbo/aitsc/src/flask_prompt_master/templates/generate.html", line 99, in block_content
+
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/jinja2/environment.py", line 490, in getattr
+ return getattr(obj, attribute)
+ ^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/orm/attributes.py", line 569, in __get__
+ return self.impl.get(state, dict_) # type: ignore[no-any-return]
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/orm/attributes.py", line 1096, in get
+ value = self._fire_loader_callables(state, key, passive)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/orm/attributes.py", line 1126, in _fire_loader_callables
+ return state._load_expired(state, passive)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/orm/state.py", line 803, in _load_expired
+ self.manager.expired_attribute_loader(self, toload, passive)
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/orm/loading.py", line 1674, in load_scalar_attributes
+ result = load_on_ident(
+ ^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/orm/loading.py", line 510, in load_on_ident
+ return load_on_pk_identity(
+ ^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/orm/loading.py", line 695, in load_on_pk_identity
+ session.execute(
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2365, in execute
+ return self._execute_internal(
+ ^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2251, in _execute_internal
+ result: Result[Any] = compile_state_cls.orm_execute_statement(
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/orm/context.py", line 306, in orm_execute_statement
+ result = conn.execute(
+ ^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
+ return meth(
+ ^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
+ return connection._execute_clauseelement(
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
+ ret = self._execute_context(
+ ^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
+ return self._exec_single_context(
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
+ self._handle_dbapi_exception(
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 2358, in _handle_dbapi_exception
+ raise exc_info[1].with_traceback(exc_info[2])
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
+ self.dialect.do_execute(
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
+ cursor.execute(statement, parameters)
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/cursors.py", line 153, in execute
+ result = self._query(query)
+ ^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/cursors.py", line 322, in _query
+ conn.query(q)
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/connections.py", line 563, in query
+ self._affected_rows = self._read_query_result(unbuffered=unbuffered)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/connections.py", line 825, in _read_query_result
+ result.read()
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/connections.py", line 1199, in read
+ first_packet = self.connection._read_packet()
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/connections.py", line 744, in _read_packet
+ packet_header = self._read_bytes(4)
+ ^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/connections.py", line 782, in _read_bytes
+ data = self._rfile.read(num_bytes)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/socket.py", line 720, in readinto
+ return self._sock.recv_into(b)
+ ^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/workers/base.py", line 204, in handle_abort
+ sys.exit(1)
+SystemExit: 1
+[2025-08-26 09:26:05 +0800] [22781] [INFO] Worker exiting (pid: 22781)
+[2025-08-26 09:26:06 +0800] [22763] [INFO] 工作进程 [booting] 即将启动
+[2025-08-26 09:26:06 +0800] [26964] [INFO] Booting worker with pid: 26964
+[2025-08-26 09:26:06 +0800] [26964] [INFO] 工作进程 26964 已启动
+[2025-08-26 09:26:06 +0800] [26964] [INFO] 工作进程 26964 初始化完成
+[2025-08-26 09:26:43 +0800] [22763] [CRITICAL] WORKER TIMEOUT (pid:26650)
+[2025-08-26 09:26:43 +0800] [26650] [INFO] 工作进程 26650 异常退出
+[2025-08-26 09:26:43 +0800] [26650] [ERROR] Error handling request /
+Traceback (most recent call last):
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/workers/sync.py", line 134, in handle
+ self.handle_request(listener, req, client, addr)
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/workers/sync.py", line 177, in handle_request
+ respiter = self.wsgi(environ, resp.start_response)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 1536, in __call__
+ return self.wsgi_app(environ, start_response)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 1511, in wsgi_app
+ response = self.full_dispatch_request()
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 917, in full_dispatch_request
+ rv = self.dispatch_request()
+ ^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 902, in dispatch_request
+ return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return]
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/aitsc/src/flask_prompt_master/routes/routes.py", line 139, in index
+ return render_template('generate.html', form=form, prompt=prompt, templates=templates,
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/templating.py", line 150, in render_template
+ return _render(app, template, context)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/templating.py", line 131, in _render
+ rv = template.render(context)
+ ^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/jinja2/environment.py", line 1293, in render
+ return self.environment.concat(self.root_render_func(ctx)) # type: ignore
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/aitsc/src/flask_prompt_master/templates/generate.html", line 15, in root
+
+ File "/home/renjianbo/aitsc/src/flask_prompt_master/templates/base.html", line 37, in root
+ }
+ File "/home/renjianbo/aitsc/src/flask_prompt_master/templates/generate.html", line 99, in block_content
+
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/jinja2/environment.py", line 490, in getattr
+ return getattr(obj, attribute)
+ ^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/orm/attributes.py", line 569, in __get__
+ return self.impl.get(state, dict_) # type: ignore[no-any-return]
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/orm/attributes.py", line 1096, in get
+ value = self._fire_loader_callables(state, key, passive)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/orm/attributes.py", line 1126, in _fire_loader_callables
+ return state._load_expired(state, passive)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/orm/state.py", line 803, in _load_expired
+ self.manager.expired_attribute_loader(self, toload, passive)
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/orm/loading.py", line 1674, in load_scalar_attributes
+ result = load_on_ident(
+ ^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/orm/loading.py", line 510, in load_on_ident
+ return load_on_pk_identity(
+ ^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/orm/loading.py", line 695, in load_on_pk_identity
+ session.execute(
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2365, in execute
+ return self._execute_internal(
+ ^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2251, in _execute_internal
+ result: Result[Any] = compile_state_cls.orm_execute_statement(
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/orm/context.py", line 306, in orm_execute_statement
+ result = conn.execute(
+ ^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
+ return meth(
+ ^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
+ return connection._execute_clauseelement(
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
+ ret = self._execute_context(
+ ^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
+ return self._exec_single_context(
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
+ self._handle_dbapi_exception(
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 2358, in _handle_dbapi_exception
+ raise exc_info[1].with_traceback(exc_info[2])
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
+ self.dialect.do_execute(
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
+ cursor.execute(statement, parameters)
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/cursors.py", line 153, in execute
+ result = self._query(query)
+ ^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/cursors.py", line 322, in _query
+ conn.query(q)
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/connections.py", line 563, in query
+ self._affected_rows = self._read_query_result(unbuffered=unbuffered)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/connections.py", line 825, in _read_query_result
+ result.read()
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/connections.py", line 1199, in read
+ first_packet = self.connection._read_packet()
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/connections.py", line 744, in _read_packet
+ packet_header = self._read_bytes(4)
+ ^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/connections.py", line 782, in _read_bytes
+ data = self._rfile.read(num_bytes)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/socket.py", line 720, in readinto
+ return self._sock.recv_into(b)
+ ^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/workers/base.py", line 204, in handle_abort
+ sys.exit(1)
+SystemExit: 1
+[2025-08-26 09:26:43 +0800] [26650] [INFO] Worker exiting (pid: 26650)
+[2025-08-26 09:26:43 +0800] [22763] [INFO] 工作进程 [booting] 即将启动
+[2025-08-26 09:26:43 +0800] [27236] [INFO] Booting worker with pid: 27236
+[2025-08-26 09:26:43 +0800] [27236] [INFO] 工作进程 27236 已启动
+[2025-08-26 09:26:43 +0800] [27236] [INFO] 工作进程 27236 初始化完成
+[2025-08-26 09:27:50 +0800] [22763] [CRITICAL] WORKER TIMEOUT (pid:26964)
+[2025-08-26 09:27:50 +0800] [26964] [INFO] 工作进程 26964 异常退出
+[2025-08-26 09:27:50 +0800] [26964] [ERROR] Error handling request /
+Traceback (most recent call last):
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/workers/sync.py", line 134, in handle
+ self.handle_request(listener, req, client, addr)
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/workers/sync.py", line 177, in handle_request
+ respiter = self.wsgi(environ, resp.start_response)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 1536, in __call__
+ return self.wsgi_app(environ, start_response)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 1511, in wsgi_app
+ response = self.full_dispatch_request()
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 917, in full_dispatch_request
+ rv = self.dispatch_request()
+ ^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 902, in dispatch_request
+ return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return]
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/aitsc/src/flask_prompt_master/routes/routes.py", line 139, in index
+ return render_template('generate.html', form=form, prompt=prompt, templates=templates,
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/templating.py", line 150, in render_template
+ return _render(app, template, context)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/templating.py", line 131, in _render
+ rv = template.render(context)
+ ^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/jinja2/environment.py", line 1293, in render
+ return self.environment.concat(self.root_render_func(ctx)) # type: ignore
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/aitsc/src/flask_prompt_master/templates/generate.html", line 15, in root
+
+ File "/home/renjianbo/aitsc/src/flask_prompt_master/templates/base.html", line 37, in root
+ }
+ File "/home/renjianbo/aitsc/src/flask_prompt_master/templates/generate.html", line 99, in block_content
+
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/jinja2/environment.py", line 490, in getattr
+ return getattr(obj, attribute)
+ ^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/orm/attributes.py", line 569, in __get__
+ return self.impl.get(state, dict_) # type: ignore[no-any-return]
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/orm/attributes.py", line 1096, in get
+ value = self._fire_loader_callables(state, key, passive)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/orm/attributes.py", line 1126, in _fire_loader_callables
+ return state._load_expired(state, passive)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/orm/state.py", line 803, in _load_expired
+ self.manager.expired_attribute_loader(self, toload, passive)
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/orm/loading.py", line 1674, in load_scalar_attributes
+ result = load_on_ident(
+ ^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/orm/loading.py", line 510, in load_on_ident
+ return load_on_pk_identity(
+ ^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/orm/loading.py", line 695, in load_on_pk_identity
+ session.execute(
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2365, in execute
+ return self._execute_internal(
+ ^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2251, in _execute_internal
+ result: Result[Any] = compile_state_cls.orm_execute_statement(
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/orm/context.py", line 306, in orm_execute_statement
+ result = conn.execute(
+ ^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
+ return meth(
+ ^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
+ return connection._execute_clauseelement(
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
+ ret = self._execute_context(
+ ^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
+ return self._exec_single_context(
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
+ self._handle_dbapi_exception(
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 2358, in _handle_dbapi_exception
+ raise exc_info[1].with_traceback(exc_info[2])
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
+ self.dialect.do_execute(
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
+ cursor.execute(statement, parameters)
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/cursors.py", line 153, in execute
+ result = self._query(query)
+ ^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/cursors.py", line 322, in _query
+ conn.query(q)
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/connections.py", line 563, in query
+ self._affected_rows = self._read_query_result(unbuffered=unbuffered)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/connections.py", line 825, in _read_query_result
+ result.read()
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/connections.py", line 1199, in read
+ first_packet = self.connection._read_packet()
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/connections.py", line 744, in _read_packet
+ packet_header = self._read_bytes(4)
+ ^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/connections.py", line 782, in _read_bytes
+ data = self._rfile.read(num_bytes)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/socket.py", line 720, in readinto
+ return self._sock.recv_into(b)
+ ^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/workers/base.py", line 204, in handle_abort
+ sys.exit(1)
+SystemExit: 1
+[2025-08-26 09:27:50 +0800] [26964] [INFO] Worker exiting (pid: 26964)
+[2025-08-26 09:27:50 +0800] [22763] [INFO] 工作进程 [booting] 即将启动
+[2025-08-26 09:27:50 +0800] [28042] [INFO] Booting worker with pid: 28042
+[2025-08-26 09:27:50 +0800] [28042] [INFO] 工作进程 28042 已启动
+[2025-08-26 09:27:50 +0800] [28042] [INFO] 工作进程 28042 初始化完成
+[2025-08-26 11:50:01 +0800] [28322] [WARNING] Invalid request from ip=3.134.148.59: Invalid HTTP request line: 'SSH-2.0-Go'
+[2025-08-26 13:31:15 +0800] [22783] [WARNING] Invalid request from ip=79.124.49.210: Invalid HTTP request line: '\x03\x00\x00/*à\x00\x00\x00\x00\x00Cookie: mstshash=Administr'
+[2025-08-26 16:03:38 +0800] [27236] [WARNING] Invalid request from ip=199.45.154.121: Invalid HTTP Version: (2, 0)
+[2025-08-26 16:03:43 +0800] [27236] [WARNING] Invalid request from ip=199.45.154.121: Invalid HTTP Version: (2, 0)
+[2025-08-27 01:00:16 +0800] [22763] [ERROR] Worker (pid:22783) was sent SIGHUP!
+[2025-08-27 01:00:16 +0800] [22763] [ERROR] Worker (pid:27408) was sent SIGHUP!
+[2025-08-27 01:00:16 +0800] [22763] [ERROR] Worker (pid:28322) was sent SIGHUP!
+[2025-08-27 01:00:16 +0800] [22763] [ERROR] Worker (pid:27236) was sent SIGHUP!
+[2025-08-27 01:00:16 +0800] [22763] [ERROR] Worker (pid:28042) was sent SIGHUP!
+[2025-08-27 01:00:16 +0800] [22763] [INFO] 工作进程 [booting] 即将启动
+[2025-08-27 01:00:16 +0800] [15387] [INFO] Booting worker with pid: 15387
+[2025-08-27 01:00:16 +0800] [15387] [INFO] 工作进程 15387 已启动
+[2025-08-27 01:00:16 +0800] [15387] [INFO] 工作进程 15387 初始化完成
+[2025-08-27 01:00:16 +0800] [22763] [INFO] 工作进程 [booting] 即将启动
+[2025-08-27 01:00:16 +0800] [15537] [INFO] Booting worker with pid: 15537
+[2025-08-27 01:00:16 +0800] [15537] [INFO] 工作进程 15537 已启动
+[2025-08-27 01:00:16 +0800] [15537] [INFO] 工作进程 15537 初始化完成
+[2025-08-27 01:00:16 +0800] [22763] [INFO] 工作进程 [booting] 即将启动
+[2025-08-27 01:00:16 +0800] [15574] [INFO] Booting worker with pid: 15574
+[2025-08-27 01:00:16 +0800] [15574] [INFO] 工作进程 15574 已启动
+[2025-08-27 01:00:16 +0800] [15574] [INFO] 工作进程 15574 初始化完成
+[2025-08-27 01:00:16 +0800] [22763] [INFO] 工作进程 [booting] 即将启动
+[2025-08-27 01:00:16 +0800] [15621] [INFO] Booting worker with pid: 15621
+[2025-08-27 01:00:16 +0800] [15621] [INFO] 工作进程 15621 已启动
+[2025-08-27 01:00:16 +0800] [15621] [INFO] 工作进程 15621 初始化完成
+[2025-08-27 01:00:16 +0800] [22763] [INFO] 工作进程 [booting] 即将启动
+[2025-08-27 01:00:16 +0800] [15694] [INFO] Booting worker with pid: 15694
+[2025-08-27 01:00:16 +0800] [15694] [INFO] 工作进程 15694 已启动
+[2025-08-27 01:00:16 +0800] [15694] [INFO] 工作进程 15694 初始化完成
+[2025-08-27 01:00:16 +0800] [22763] [INFO] Handling signal: hup
+[2025-08-27 01:00:16 +0800] [22763] [INFO] Hang up: Master
+[2025-08-27 01:00:16 +0800] [22763] [INFO] Gunicorn服务器重载中...
+[2025-08-27 01:00:16 +0800] [22763] [INFO] 工作进程 [booting] 即将启动
+[2025-08-27 01:00:16 +0800] [22763] [INFO] 工作进程 [booting] 即将启动
+[2025-08-27 01:00:16 +0800] [15743] [INFO] Booting worker with pid: 15743
+[2025-08-27 01:00:16 +0800] [15743] [INFO] 工作进程 15743 已启动
+[2025-08-27 01:00:16 +0800] [15743] [INFO] 工作进程 15743 初始化完成
+[2025-08-27 01:00:16 +0800] [22763] [INFO] 工作进程 [booting] 即将启动
+[2025-08-27 01:00:16 +0800] [22763] [INFO] 工作进程 [booting] 即将启动
+[2025-08-27 01:00:16 +0800] [15748] [INFO] Booting worker with pid: 15748
+[2025-08-27 01:00:16 +0800] [15748] [INFO] 工作进程 15748 已启动
+[2025-08-27 01:00:16 +0800] [22763] [INFO] 工作进程 [booting] 即将启动
+[2025-08-27 01:00:16 +0800] [15748] [INFO] 工作进程 15748 初始化完成
+[2025-08-27 01:00:16 +0800] [15387] [INFO] Worker exiting (pid: 15387)
+[2025-08-27 01:00:16 +0800] [15750] [INFO] Booting worker with pid: 15750
+[2025-08-27 01:00:16 +0800] [15750] [INFO] 工作进程 15750 已启动
+[2025-08-27 01:00:16 +0800] [15750] [INFO] 工作进程 15750 初始化完成
+[2025-08-27 01:00:16 +0800] [15537] [INFO] Worker exiting (pid: 15537)
+[2025-08-27 01:00:16 +0800] [15574] [INFO] Worker exiting (pid: 15574)
+[2025-08-27 01:00:16 +0800] [15621] [INFO] Worker exiting (pid: 15621)
+[2025-08-27 01:00:16 +0800] [15694] [INFO] Worker exiting (pid: 15694)
+[2025-08-27 01:00:16 +0800] [15746] [INFO] Booting worker with pid: 15746
+[2025-08-27 01:00:16 +0800] [15746] [INFO] 工作进程 15746 已启动
+[2025-08-27 01:00:16 +0800] [15746] [INFO] 工作进程 15746 初始化完成
+[2025-08-27 01:00:16 +0800] [15749] [INFO] Booting worker with pid: 15749
+[2025-08-27 01:00:16 +0800] [15749] [INFO] 工作进程 15749 已启动
+[2025-08-27 01:00:16 +0800] [15749] [INFO] 工作进程 15749 初始化完成
+[2025-08-27 01:00:17 +0800] [22763] [ERROR] Worker (pid:15537) was sent SIGTERM!
+[2025-08-27 01:00:17 +0800] [22763] [ERROR] Worker (pid:15387) was sent SIGTERM!
+[2025-08-27 01:00:17 +0800] [22763] [ERROR] Worker (pid:15621) was sent SIGTERM!
+[2025-08-27 13:36:30 +0800] [15746] [WARNING] Invalid request from ip=194.0.234.12: Invalid HTTP request line: '\x03\x00\x00/*à\x00\x00\x00\x00\x00Cookie: mstshash=Administr'
+[2025-08-27 14:32:31 +0800] [15743] [WARNING] Invalid request from ip=85.208.84.95: Invalid HTTP request line: '\x03\x00\x00/*à\x00\x00\x00\x00\x00Cookie: mstshash=Administr'
+[2025-08-27 15:58:10 +0800] [15746] [WARNING] Invalid request from ip=167.94.138.191: Invalid HTTP Version: (2, 0)
+[2025-08-27 15:58:17 +0800] [15748] [WARNING] Invalid request from ip=167.94.138.191: Invalid HTTP Version: (2, 0)
+[2025-08-27 16:02:36 +0800] [22763] [CRITICAL] WORKER TIMEOUT (pid:15749)
+[2025-08-27 16:02:36 +0800] [15749] [INFO] 工作进程 15749 异常退出
+[2025-08-27 16:02:36 +0800] [15749] [ERROR] Error handling request (no URI read)
+Traceback (most recent call last):
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/workers/sync.py", line 133, in handle
+ req = next(parser)
+ ^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/parser.py", line 41, in __next__
+ self.mesg = self.mesg_class(self.cfg, self.unreader, self.source_addr, self.req_count)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 259, in __init__
+ super().__init__(cfg, unreader, peer_addr)
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 60, in __init__
+ unused = self.parse(self.unreader)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 271, in parse
+ self.get_data(unreader, buf, stop=True)
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 262, in get_data
+ data = unreader.read()
+ ^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/unreader.py", line 36, in read
+ d = self.chunk()
+ ^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/unreader.py", line 63, in chunk
+ return self.sock.recv(self.mxchunk)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/workers/base.py", line 204, in handle_abort
+ sys.exit(1)
+SystemExit: 1
+[2025-08-27 16:02:36 +0800] [15749] [INFO] Worker exiting (pid: 15749)
+[2025-08-27 16:02:37 +0800] [22763] [INFO] 工作进程 [booting] 即将启动
+[2025-08-27 16:02:37 +0800] [30629] [INFO] Booting worker with pid: 30629
+[2025-08-27 16:02:37 +0800] [30629] [INFO] 工作进程 30629 已启动
+[2025-08-27 16:02:37 +0800] [30629] [INFO] 工作进程 30629 初始化完成
+[2025-08-27 20:26:09 +0800] [15750] [WARNING] Invalid request from ip=79.124.49.202: Invalid HTTP request line: '\x03\x00\x00/*à\x00\x00\x00\x00\x00Cookie: mstshash=Administr'
+[2025-08-28 04:18:45 +0800] [15750] [WARNING] Invalid request from ip=79.124.49.202: Invalid HTTP request line: '\x03\x00\x00/*à\x00\x00\x00\x00\x00Cookie: mstshash=Administr'
+[2025-08-28 07:39:40 +0800] [15746] [WARNING] Invalid request from ip=47.99.100.132: Invalid HTTP request line: ''
+[2025-08-28 08:14:10 +0800] [15748] [WARNING] Invalid request from ip=79.124.49.202: Invalid HTTP request line: '\x03\x00\x00/*à\x00\x00\x00\x00\x00Cookie: mstshash=Administr'
+[2025-08-28 12:41:02,160] ERROR in routes: LLM API调用失败: [Errno 5] Input/output error
+[2025-08-28 12:41:02,167] ERROR in app: Exception on / [POST]
+Traceback (most recent call last):
+ File "/home/renjianbo/aitsc/src/flask_prompt_master/routes/routes.py", line 112, in index
+ conn = pymysql.connect(
+ ^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/connections.py", line 361, in __init__
+ self.connect()
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/connections.py", line 669, in connect
+ self._request_authentication()
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/connections.py", line 957, in _request_authentication
+ auth_packet = self._read_packet()
+ ^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/connections.py", line 775, in _read_packet
+ packet.raise_for_error()
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/protocol.py", line 219, in raise_for_error
+ err.raise_mysql_exception(self._data)
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/err.py", line 150, in raise_mysql_exception
+ raise errorclass(errno, errval)
+pymysql.err.OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: YES)")
+
+During handling of the above exception, another exception occurred:
+
+Traceback (most recent call last):
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 1511, in wsgi_app
+ response = self.full_dispatch_request()
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 919, in full_dispatch_request
+ rv = self.handle_user_exception(e)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask_cors/extension.py", line 176, in wrapped_function
+ return cors_after_request(app.make_response(f(*args, **kwargs)))
+ ^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 917, in full_dispatch_request
+ rv = self.dispatch_request()
+ ^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 902, in dispatch_request
+ return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return]
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/aitsc/src/flask_prompt_master/routes/routes.py", line 129, in index
+ print(f"获取用户ID失败: {str(e)}")
+OSError: [Errno 5] Input/output error
+[2025-08-28 12:41:43,169] ERROR in routes: LLM API调用失败: [Errno 5] Input/output error
+[2025-08-28 12:41:43,173] ERROR in app: Exception on / [POST]
+Traceback (most recent call last):
+ File "/home/renjianbo/aitsc/src/flask_prompt_master/routes/routes.py", line 112, in index
+ conn = pymysql.connect(
+ ^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/connections.py", line 361, in __init__
+ self.connect()
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/connections.py", line 669, in connect
+ self._request_authentication()
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/connections.py", line 957, in _request_authentication
+ auth_packet = self._read_packet()
+ ^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/connections.py", line 775, in _read_packet
+ packet.raise_for_error()
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/protocol.py", line 219, in raise_for_error
+ err.raise_mysql_exception(self._data)
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/err.py", line 150, in raise_mysql_exception
+ raise errorclass(errno, errval)
+pymysql.err.OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: YES)")
+
+During handling of the above exception, another exception occurred:
+
+Traceback (most recent call last):
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 1511, in wsgi_app
+ response = self.full_dispatch_request()
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 919, in full_dispatch_request
+ rv = self.handle_user_exception(e)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask_cors/extension.py", line 176, in wrapped_function
+ return cors_after_request(app.make_response(f(*args, **kwargs)))
+ ^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 917, in full_dispatch_request
+ rv = self.dispatch_request()
+ ^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 902, in dispatch_request
+ return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return]
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/aitsc/src/flask_prompt_master/routes/routes.py", line 129, in index
+ print(f"获取用户ID失败: {str(e)}")
+OSError: [Errno 5] Input/output error
+[2025-08-28 12:42:44,303] ERROR in routes: LLM API调用失败: [Errno 5] Input/output error
+[2025-08-28 12:42:44,306] ERROR in app: Exception on / [POST]
+Traceback (most recent call last):
+ File "/home/renjianbo/aitsc/src/flask_prompt_master/routes/routes.py", line 112, in index
+ conn = pymysql.connect(
+ ^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/connections.py", line 361, in __init__
+ self.connect()
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/connections.py", line 669, in connect
+ self._request_authentication()
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/connections.py", line 957, in _request_authentication
+ auth_packet = self._read_packet()
+ ^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/connections.py", line 775, in _read_packet
+ packet.raise_for_error()
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/protocol.py", line 219, in raise_for_error
+ err.raise_mysql_exception(self._data)
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/err.py", line 150, in raise_mysql_exception
+ raise errorclass(errno, errval)
+pymysql.err.OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: YES)")
+
+During handling of the above exception, another exception occurred:
+
+Traceback (most recent call last):
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 1511, in wsgi_app
+ response = self.full_dispatch_request()
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 919, in full_dispatch_request
+ rv = self.handle_user_exception(e)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask_cors/extension.py", line 176, in wrapped_function
+ return cors_after_request(app.make_response(f(*args, **kwargs)))
+ ^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 917, in full_dispatch_request
+ rv = self.dispatch_request()
+ ^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 902, in dispatch_request
+ return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return]
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/aitsc/src/flask_prompt_master/routes/routes.py", line 129, in index
+ print(f"获取用户ID失败: {str(e)}")
+OSError: [Errno 5] Input/output error
+[2025-08-28 13:36:39 +0800] [15743] [WARNING] Invalid request from ip=3.134.148.59: Invalid HTTP request line: 'SSH-2.0-Go'
+[2025-08-28 16:13:49 +0800] [15743] [WARNING] Invalid request from ip=79.124.49.202: Invalid HTTP request line: '\x03\x00\x00/*à\x00\x00\x00\x00\x00Cookie: mstshash=Administr'
+[2025-08-28 16:58:44 +0800] [15750] [WARNING] Invalid request from ip=162.142.125.197: Invalid HTTP Version: (2, 0)
+[2025-08-28 16:58:52 +0800] [15746] [WARNING] Invalid request from ip=162.142.125.197: Invalid HTTP Version: (2, 0)
+[2025-08-28 18:45:19 +0800] [30629] [WARNING] Invalid request from ip=47.122.84.251: Invalid HTTP request line: ''
+[2025-08-28 18:45:19 +0800] [15746] [WARNING] Invalid request from ip=47.122.84.251: Invalid HTTP Version: 'RTSP/1.0'
+[2025-08-28 18:45:30 +0800] [15750] [WARNING] Invalid request from ip=47.122.84.251: Invalid HTTP request line: 'HELP'
+[2025-08-28 18:45:55 +0800] [30629] [WARNING] Invalid request from ip=47.122.84.251: Invalid HTTP Version: 'SIP/2.0'
+[2025-08-29 00:39:51 +0800] [22763] [CRITICAL] WORKER TIMEOUT (pid:15746)
+[2025-08-29 00:39:51 +0800] [15746] [INFO] 工作进程 15746 异常退出
+[2025-08-29 00:39:51 +0800] [15746] [ERROR] Error handling request (no URI read)
+Traceback (most recent call last):
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/workers/sync.py", line 133, in handle
+ req = next(parser)
+ ^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/parser.py", line 41, in __next__
+ self.mesg = self.mesg_class(self.cfg, self.unreader, self.source_addr, self.req_count)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 259, in __init__
+ super().__init__(cfg, unreader, peer_addr)
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 60, in __init__
+ unused = self.parse(self.unreader)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 271, in parse
+ self.get_data(unreader, buf, stop=True)
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 262, in get_data
+ data = unreader.read()
+ ^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/unreader.py", line 36, in read
+ d = self.chunk()
+ ^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/unreader.py", line 63, in chunk
+ return self.sock.recv(self.mxchunk)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/workers/base.py", line 204, in handle_abort
+ sys.exit(1)
+SystemExit: 1
+[2025-08-29 00:39:51 +0800] [15746] [INFO] Worker exiting (pid: 15746)
+[2025-08-29 00:39:51 +0800] [22763] [ERROR] Worker (pid:15746) exited with code 120
+[2025-08-29 00:39:51 +0800] [22763] [ERROR] Worker (pid:15746) exited with code 120.
+[2025-08-29 00:39:51 +0800] [22763] [INFO] 工作进程 [booting] 即将启动
+[2025-08-29 00:39:51 +0800] [14750] [INFO] Booting worker with pid: 14750
+[2025-08-29 00:39:51 +0800] [14750] [INFO] 工作进程 14750 已启动
+[2025-08-29 00:39:51 +0800] [14750] [INFO] 工作进程 14750 初始化完成
+[2025-08-29 00:42:49,859] ERROR in app: Exception on / [GET]
+Traceback (most recent call last):
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 1511, in wsgi_app
+ response = self.full_dispatch_request()
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 919, in full_dispatch_request
+ rv = self.handle_user_exception(e)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask_cors/extension.py", line 176, in wrapped_function
+ return cors_after_request(app.make_response(f(*args, **kwargs)))
+ ^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 917, in full_dispatch_request
+ rv = self.dispatch_request()
+ ^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 902, in dispatch_request
+ return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return]
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/aitsc/src/flask_prompt_master/routes/routes.py", line 143, in index
+ return render_template('generate.html', form=form, prompt=None, templates=templates,
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/templating.py", line 150, in render_template
+ return _render(app, template, context)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/templating.py", line 131, in _render
+ rv = template.render(context)
+ ^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/jinja2/environment.py", line 1295, in render
+ self.environment.handle_exception()
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/jinja2/environment.py", line 942, in handle_exception
+ raise rewrite_traceback_stack(source=source)
+ File "/home/renjianbo/aitsc/src/flask_prompt_master/templates/generate.html", line 1, in top-level template code
+ {% extends "base.html" %}
+ File "/home/renjianbo/aitsc/src/flask_prompt_master/templates/base.html", line 257, in top-level template code
+
+ ^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 1121, in url_for
+ return self.handle_url_build_error(error, endpoint, values)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 1110, in url_for
+ rv = url_adapter.build( # type: ignore[union-attr]
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/werkzeug/routing/map.py", line 924, in build
+ raise BuildError(endpoint, values, method, self)
+werkzeug.routing.exceptions.BuildError: Could not build url for endpoint 'favorites.favorites_page'. Did you mean 'main.delete_template' instead?
+[2025-08-29 00:43:19 +0800] [22763] [CRITICAL] WORKER TIMEOUT (pid:15750)
+[2025-08-29 00:43:19 +0800] [15750] [INFO] 工作进程 15750 异常退出
+[2025-08-29 00:43:19 +0800] [15750] [ERROR] Error handling request (no URI read)
+Traceback (most recent call last):
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/workers/sync.py", line 133, in handle
+ req = next(parser)
+ ^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/parser.py", line 41, in __next__
+ self.mesg = self.mesg_class(self.cfg, self.unreader, self.source_addr, self.req_count)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 259, in __init__
+ super().__init__(cfg, unreader, peer_addr)
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 60, in __init__
+ unused = self.parse(self.unreader)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 271, in parse
+ self.get_data(unreader, buf, stop=True)
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 262, in get_data
+ data = unreader.read()
+ ^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/unreader.py", line 36, in read
+ d = self.chunk()
+ ^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/unreader.py", line 63, in chunk
+ return self.sock.recv(self.mxchunk)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/workers/base.py", line 204, in handle_abort
+ sys.exit(1)
+SystemExit: 1
+[2025-08-29 00:43:19 +0800] [15750] [INFO] Worker exiting (pid: 15750)
+[2025-08-29 00:43:19 +0800] [22763] [ERROR] Worker (pid:15750) exited with code 120
+[2025-08-29 00:43:19 +0800] [22763] [ERROR] Worker (pid:15750) exited with code 120.
+[2025-08-29 00:43:19 +0800] [22763] [INFO] 工作进程 [booting] 即将启动
+[2025-08-29 00:43:19 +0800] [7184] [INFO] Booting worker with pid: 7184
+[2025-08-29 00:43:19 +0800] [7184] [INFO] 工作进程 7184 已启动
+[2025-08-29 00:43:19 +0800] [7184] [INFO] 工作进程 7184 初始化完成
+[2025-08-29 00:44:58 +0800] [22763] [CRITICAL] WORKER TIMEOUT (pid:14750)
+[2025-08-29 00:44:58 +0800] [14750] [INFO] 工作进程 14750 异常退出
+[2025-08-29 00:44:58 +0800] [14750] [ERROR] Error handling request (no URI read)
+Traceback (most recent call last):
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/workers/sync.py", line 133, in handle
+ req = next(parser)
+ ^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/parser.py", line 41, in __next__
+ self.mesg = self.mesg_class(self.cfg, self.unreader, self.source_addr, self.req_count)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 259, in __init__
+ super().__init__(cfg, unreader, peer_addr)
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 60, in __init__
+ unused = self.parse(self.unreader)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 271, in parse
+ self.get_data(unreader, buf, stop=True)
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 262, in get_data
+ data = unreader.read()
+ ^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/unreader.py", line 36, in read
+ d = self.chunk()
+ ^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/unreader.py", line 63, in chunk
+ return self.sock.recv(self.mxchunk)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/workers/base.py", line 204, in handle_abort
+ sys.exit(1)
+SystemExit: 1
+[2025-08-29 00:44:58 +0800] [14750] [INFO] Worker exiting (pid: 14750)
+[2025-08-29 00:44:58 +0800] [22763] [ERROR] Worker (pid:14750) exited with code 120
+[2025-08-29 00:44:58 +0800] [22763] [ERROR] Worker (pid:14750) exited with code 120.
+[2025-08-29 00:44:58 +0800] [22763] [INFO] 工作进程 [booting] 即将启动
+[2025-08-29 00:44:58 +0800] [7979] [INFO] Booting worker with pid: 7979
+[2025-08-29 00:44:58 +0800] [7979] [INFO] 工作进程 7979 已启动
+[2025-08-29 00:44:58 +0800] [7979] [INFO] 工作进程 7979 初始化完成
+[2025-08-29 00:47:46 +0800] [7184] [INFO] Worker exiting (pid: 7184)
+[2025-08-29 00:47:46 +0800] [22763] [INFO] 工作进程 [booting] 即将启动
+[2025-08-29 00:47:46 +0800] [311] [INFO] Booting worker with pid: 311
+[2025-08-29 00:47:46 +0800] [311] [INFO] 工作进程 311 已启动
+[2025-08-29 00:47:46 +0800] [311] [INFO] 工作进程 311 初始化完成
+[2025-08-29 00:49:42 +0800] [311] [INFO] Worker exiting (pid: 311)
+[2025-08-29 00:49:42 +0800] [22763] [INFO] 工作进程 [booting] 即将启动
+[2025-08-29 00:49:42 +0800] [1319] [INFO] Booting worker with pid: 1319
+[2025-08-29 00:49:42 +0800] [1319] [INFO] 工作进程 1319 已启动
+[2025-08-29 00:49:42 +0800] [1319] [INFO] 工作进程 1319 初始化完成
+[2025-08-29 00:51:01 +0800] [22763] [CRITICAL] WORKER TIMEOUT (pid:15743)
+[2025-08-29 00:51:01 +0800] [15743] [INFO] 工作进程 15743 异常退出
+[2025-08-29 00:51:01 +0800] [15743] [ERROR] Error handling request (no URI read)
+Traceback (most recent call last):
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/workers/sync.py", line 133, in handle
+ req = next(parser)
+ ^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/parser.py", line 41, in __next__
+ self.mesg = self.mesg_class(self.cfg, self.unreader, self.source_addr, self.req_count)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 259, in __init__
+ super().__init__(cfg, unreader, peer_addr)
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 60, in __init__
+ unused = self.parse(self.unreader)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 271, in parse
+ self.get_data(unreader, buf, stop=True)
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 262, in get_data
+ data = unreader.read()
+ ^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/unreader.py", line 36, in read
+ d = self.chunk()
+ ^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/unreader.py", line 63, in chunk
+ return self.sock.recv(self.mxchunk)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/workers/base.py", line 204, in handle_abort
+ sys.exit(1)
+SystemExit: 1
+[2025-08-29 00:51:01 +0800] [15743] [INFO] Worker exiting (pid: 15743)
+[2025-08-29 00:51:01 +0800] [22763] [ERROR] Worker (pid:15743) exited with code 120
+[2025-08-29 00:51:01 +0800] [22763] [ERROR] Worker (pid:15743) exited with code 120.
+[2025-08-29 00:51:01 +0800] [22763] [INFO] 工作进程 [booting] 即将启动
+[2025-08-29 00:51:01 +0800] [24975] [INFO] Booting worker with pid: 24975
+[2025-08-29 00:51:01 +0800] [24975] [INFO] 工作进程 24975 已启动
+[2025-08-29 00:51:01 +0800] [24975] [INFO] 工作进程 24975 初始化完成
+[2025-08-29 00:54:50 +0800] [22763] [CRITICAL] WORKER TIMEOUT (pid:7979)
+[2025-08-29 00:54:50 +0800] [7979] [INFO] 工作进程 7979 异常退出
+[2025-08-29 00:54:50 +0800] [7979] [ERROR] Error handling request (no URI read)
+Traceback (most recent call last):
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/workers/sync.py", line 133, in handle
+ req = next(parser)
+ ^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/parser.py", line 41, in __next__
+ self.mesg = self.mesg_class(self.cfg, self.unreader, self.source_addr, self.req_count)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 259, in __init__
+ super().__init__(cfg, unreader, peer_addr)
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 60, in __init__
+ unused = self.parse(self.unreader)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 271, in parse
+ self.get_data(unreader, buf, stop=True)
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 262, in get_data
+ data = unreader.read()
+ ^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/unreader.py", line 36, in read
+ d = self.chunk()
+ ^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/unreader.py", line 63, in chunk
+ return self.sock.recv(self.mxchunk)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/workers/base.py", line 204, in handle_abort
+ sys.exit(1)
+SystemExit: 1
+[2025-08-29 00:54:50 +0800] [7979] [INFO] Worker exiting (pid: 7979)
+[2025-08-29 00:54:51 +0800] [22763] [INFO] 工作进程 [booting] 即将启动
+[2025-08-29 00:54:51 +0800] [26600] [INFO] Booting worker with pid: 26600
+[2025-08-29 00:54:51 +0800] [26600] [INFO] 工作进程 26600 已启动
+[2025-08-29 00:54:51 +0800] [26600] [INFO] 工作进程 26600 初始化完成
+[2025-08-29 00:55:57,872] ERROR in app: Exception on / [GET]
+Traceback (most recent call last):
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 1511, in wsgi_app
+ response = self.full_dispatch_request()
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 919, in full_dispatch_request
+ rv = self.handle_user_exception(e)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask_cors/extension.py", line 176, in wrapped_function
+ return cors_after_request(app.make_response(f(*args, **kwargs)))
+ ^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 917, in full_dispatch_request
+ rv = self.dispatch_request()
+ ^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 902, in dispatch_request
+ return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return]
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/aitsc/src/flask_prompt_master/routes/routes.py", line 143, in index
+ return render_template('generate.html', form=form, prompt=None, templates=templates,
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/templating.py", line 150, in render_template
+ return _render(app, template, context)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/templating.py", line 131, in _render
+ rv = template.render(context)
+ ^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/jinja2/environment.py", line 1295, in render
+ self.environment.handle_exception()
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/jinja2/environment.py", line 942, in handle_exception
+ raise rewrite_traceback_stack(source=source)
+ File "/home/renjianbo/aitsc/src/flask_prompt_master/templates/generate.html", line 1, in top-level template code
+ {% extends "base.html" %}
+ File "/home/renjianbo/aitsc/src/flask_prompt_master/templates/base.html", line 257, in top-level template code
+
+ ^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 1121, in url_for
+ return self.handle_url_build_error(error, endpoint, values)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 1110, in url_for
+ rv = url_adapter.build( # type: ignore[union-attr]
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/werkzeug/routing/map.py", line 924, in build
+ raise BuildError(endpoint, values, method, self)
+werkzeug.routing.exceptions.BuildError: Could not build url for endpoint 'favorites.favorites_page'. Did you mean 'main.delete_template' instead?
+[2025-08-29 00:56:28 +0800] [22763] [CRITICAL] WORKER TIMEOUT (pid:15748)
+[2025-08-29 00:56:28 +0800] [15748] [INFO] 工作进程 15748 异常退出
+[2025-08-29 00:56:28 +0800] [15748] [ERROR] Error handling request (no URI read)
+Traceback (most recent call last):
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/workers/sync.py", line 133, in handle
+ req = next(parser)
+ ^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/parser.py", line 41, in __next__
+ self.mesg = self.mesg_class(self.cfg, self.unreader, self.source_addr, self.req_count)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 259, in __init__
+ super().__init__(cfg, unreader, peer_addr)
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 60, in __init__
+ unused = self.parse(self.unreader)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 271, in parse
+ self.get_data(unreader, buf, stop=True)
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/message.py", line 262, in get_data
+ data = unreader.read()
+ ^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/unreader.py", line 36, in read
+ d = self.chunk()
+ ^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/http/unreader.py", line 63, in chunk
+ return self.sock.recv(self.mxchunk)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/gunicorn/workers/base.py", line 204, in handle_abort
+ sys.exit(1)
+SystemExit: 1
+[2025-08-29 00:56:28 +0800] [15748] [INFO] Worker exiting (pid: 15748)
+[2025-08-29 00:56:28 +0800] [22763] [INFO] 工作进程 [booting] 即将启动
+[2025-08-29 00:56:28 +0800] [17976] [INFO] Booting worker with pid: 17976
+[2025-08-29 00:56:28 +0800] [17976] [INFO] 工作进程 17976 已启动
+[2025-08-29 00:56:28 +0800] [17976] [INFO] 工作进程 17976 初始化完成
+[2025-08-29 01:01:35 +0800] [1319] [INFO] Worker exiting (pid: 1319)
+[2025-08-29 01:01:35 +0800] [17976] [INFO] Worker exiting (pid: 17976)
+[2025-08-29 01:01:35 +0800] [30629] [INFO] Worker exiting (pid: 30629)
+[2025-08-29 01:01:35 +0800] [22763] [INFO] Handling signal: term
+[2025-08-29 01:01:35 +0800] [24975] [INFO] Worker exiting (pid: 24975)
+[2025-08-29 01:01:35 +0800] [26600] [INFO] Worker exiting (pid: 26600)
+[2025-08-29 01:01:35 +0800] [22763] [ERROR] Worker (pid:1319) was sent SIGTERM!
+[2025-08-29 01:01:35 +0800] [22763] [ERROR] Worker (pid:17976) was sent SIGTERM!
+[2025-08-29 01:01:36 +0800] [22763] [ERROR] Worker (pid:26600) exited with code 120
+[2025-08-29 01:01:36 +0800] [22763] [ERROR] Worker (pid:26600) exited with code 120.
+[2025-08-29 01:01:36 +0800] [22763] [INFO] Shutting down: Master
diff --git a/migrations/README b/migrations/README
new file mode 100644
index 0000000..0e04844
--- /dev/null
+++ b/migrations/README
@@ -0,0 +1 @@
+Single-database configuration for Flask.
diff --git a/migrations/__pycache__/env.cpython-312.pyc b/migrations/__pycache__/env.cpython-312.pyc
new file mode 100644
index 0000000..0447373
Binary files /dev/null and b/migrations/__pycache__/env.cpython-312.pyc differ
diff --git a/migrations/alembic.ini b/migrations/alembic.ini
new file mode 100644
index 0000000..ec9d45c
--- /dev/null
+++ b/migrations/alembic.ini
@@ -0,0 +1,50 @@
+# A generic, single database configuration.
+
+[alembic]
+# template used to generate migration files
+# file_template = %%(rev)s_%%(slug)s
+
+# set to 'true' to run the environment during
+# the 'revision' command, regardless of autogenerate
+# revision_environment = false
+
+
+# Logging configuration
+[loggers]
+keys = root,sqlalchemy,alembic,flask_migrate
+
+[handlers]
+keys = console
+
+[formatters]
+keys = generic
+
+[logger_root]
+level = WARN
+handlers = console
+qualname =
+
+[logger_sqlalchemy]
+level = WARN
+handlers =
+qualname = sqlalchemy.engine
+
+[logger_alembic]
+level = INFO
+handlers =
+qualname = alembic
+
+[logger_flask_migrate]
+level = INFO
+handlers =
+qualname = flask_migrate
+
+[handler_console]
+class = StreamHandler
+args = (sys.stderr,)
+level = NOTSET
+formatter = generic
+
+[formatter_generic]
+format = %(levelname)-5.5s [%(name)s] %(message)s
+datefmt = %H:%M:%S
diff --git a/migrations/env.py b/migrations/env.py
new file mode 100644
index 0000000..4c97092
--- /dev/null
+++ b/migrations/env.py
@@ -0,0 +1,113 @@
+import logging
+from logging.config import fileConfig
+
+from flask import current_app
+
+from alembic import context
+
+# this is the Alembic Config object, which provides
+# access to the values within the .ini file in use.
+config = context.config
+
+# Interpret the config file for Python logging.
+# This line sets up loggers basically.
+fileConfig(config.config_file_name)
+logger = logging.getLogger('alembic.env')
+
+
+def get_engine():
+ try:
+ # this works with Flask-SQLAlchemy<3 and Alchemical
+ return current_app.extensions['migrate'].db.get_engine()
+ except (TypeError, AttributeError):
+ # this works with Flask-SQLAlchemy>=3
+ return current_app.extensions['migrate'].db.engine
+
+
+def get_engine_url():
+ try:
+ return get_engine().url.render_as_string(hide_password=False).replace(
+ '%', '%%')
+ except AttributeError:
+ return str(get_engine().url).replace('%', '%%')
+
+
+# add your model's MetaData object here
+# for 'autogenerate' support
+# from myapp import mymodel
+# target_metadata = mymodel.Base.metadata
+config.set_main_option('sqlalchemy.url', get_engine_url())
+target_db = current_app.extensions['migrate'].db
+
+# other values from the config, defined by the needs of env.py,
+# can be acquired:
+# my_important_option = config.get_main_option("my_important_option")
+# ... etc.
+
+
+def get_metadata():
+ if hasattr(target_db, 'metadatas'):
+ return target_db.metadatas[None]
+ return target_db.metadata
+
+
+def run_migrations_offline():
+ """Run migrations in 'offline' mode.
+
+ This configures the context with just a URL
+ and not an Engine, though an Engine is acceptable
+ here as well. By skipping the Engine creation
+ we don't even need a DBAPI to be available.
+
+ Calls to context.execute() here emit the given string to the
+ script output.
+
+ """
+ url = config.get_main_option("sqlalchemy.url")
+ context.configure(
+ url=url, target_metadata=get_metadata(), literal_binds=True
+ )
+
+ with context.begin_transaction():
+ context.run_migrations()
+
+
+def run_migrations_online():
+ """Run migrations in 'online' mode.
+
+ In this scenario we need to create an Engine
+ and associate a connection with the context.
+
+ """
+
+ # this callback is used to prevent an auto-migration from being generated
+ # when there are no changes to the schema
+ # reference: http://alembic.zzzcomputing.com/en/latest/cookbook.html
+ def process_revision_directives(context, revision, directives):
+ if getattr(config.cmd_opts, 'autogenerate', False):
+ script = directives[0]
+ if script.upgrade_ops.is_empty():
+ directives[:] = []
+ logger.info('No changes in schema detected.')
+
+ conf_args = current_app.extensions['migrate'].configure_args
+ if conf_args.get("process_revision_directives") is None:
+ conf_args["process_revision_directives"] = process_revision_directives
+
+ connectable = get_engine()
+
+ with connectable.connect() as connection:
+ context.configure(
+ connection=connection,
+ target_metadata=get_metadata(),
+ **conf_args
+ )
+
+ with context.begin_transaction():
+ context.run_migrations()
+
+
+if context.is_offline_mode():
+ run_migrations_offline()
+else:
+ run_migrations_online()
diff --git a/migrations/script.py.mako b/migrations/script.py.mako
new file mode 100644
index 0000000..2c01563
--- /dev/null
+++ b/migrations/script.py.mako
@@ -0,0 +1,24 @@
+"""${message}
+
+Revision ID: ${up_revision}
+Revises: ${down_revision | comma,n}
+Create Date: ${create_date}
+
+"""
+from alembic import op
+import sqlalchemy as sa
+${imports if imports else ""}
+
+# revision identifiers, used by Alembic.
+revision = ${repr(up_revision)}
+down_revision = ${repr(down_revision)}
+branch_labels = ${repr(branch_labels)}
+depends_on = ${repr(depends_on)}
+
+
+def upgrade():
+ ${upgrades if upgrades else "pass"}
+
+
+def downgrade():
+ ${downgrades if downgrades else "pass"}
diff --git a/migrations/versions/__pycache__/e1ec7bb6c8ec_add_favorites_table.cpython-312.pyc b/migrations/versions/__pycache__/e1ec7bb6c8ec_add_favorites_table.cpython-312.pyc
new file mode 100644
index 0000000..f57d46d
Binary files /dev/null and b/migrations/versions/__pycache__/e1ec7bb6c8ec_add_favorites_table.cpython-312.pyc differ
diff --git a/migrations/versions/e1ec7bb6c8ec_add_favorites_table.py b/migrations/versions/e1ec7bb6c8ec_add_favorites_table.py
new file mode 100644
index 0000000..e9f7885
--- /dev/null
+++ b/migrations/versions/e1ec7bb6c8ec_add_favorites_table.py
@@ -0,0 +1,568 @@
+"""Add favorites table
+
+Revision ID: e1ec7bb6c8ec
+Revises:
+Create Date: 2025-08-29 01:01:11.427346
+
+"""
+from alembic import op
+import sqlalchemy as sa
+from sqlalchemy.dialects import mysql
+
+# revision identifiers, used by Alembic.
+revision = 'e1ec7bb6c8ec'
+down_revision = None
+branch_labels = None
+depends_on = None
+
+
+def upgrade():
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.drop_table('deviceinfo')
+ with op.batch_alter_table('oauth_member_bind', schema=None) as batch_op:
+ batch_op.drop_index(batch_op.f('idx_type_openid'))
+
+ op.drop_table('oauth_member_bind')
+ with op.batch_alter_table('food_stock_change_log', schema=None) as batch_op:
+ batch_op.drop_index(batch_op.f('idx_food_id'))
+
+ op.drop_table('food_stock_change_log')
+ with op.batch_alter_table('oauth_access_token', schema=None) as batch_op:
+ batch_op.drop_index(batch_op.f('idx_expired_time'))
+
+ op.drop_table('oauth_access_token')
+ with op.batch_alter_table('pay_order', schema=None) as batch_op:
+ batch_op.drop_index(batch_op.f('idx_member_id_status'))
+ batch_op.drop_index(batch_op.f('idx_order_sn'))
+
+ op.drop_table('pay_order')
+ op.drop_table('mendianusertwo')
+ with op.batch_alter_table('member_comments', schema=None) as batch_op:
+ batch_op.drop_index(batch_op.f('idx_member_id'))
+
+ op.drop_table('member_comments')
+ op.drop_table('food')
+ with op.batch_alter_table('food_cat', schema=None) as batch_op:
+ batch_op.drop_index(batch_op.f('idx_name'))
+
+ op.drop_table('food_cat')
+ with op.batch_alter_table('member', schema=None) as batch_op:
+ batch_op.drop_index(batch_op.f('idx_openid'))
+
+ op.drop_table('member')
+ with op.batch_alter_table('app_access_log', schema=None) as batch_op:
+ batch_op.drop_index(batch_op.f('idx_uid'))
+
+ op.drop_table('app_access_log')
+ with op.batch_alter_table('member_address', schema=None) as batch_op:
+ batch_op.drop_index(batch_op.f('idx_member_id_status'))
+
+ op.drop_table('member_address')
+ with op.batch_alter_table('stat_daily_site', schema=None) as batch_op:
+ batch_op.drop_index(batch_op.f('idx_date'))
+
+ op.drop_table('stat_daily_site')
+ with op.batch_alter_table('pay_order_callback_data', schema=None) as batch_op:
+ batch_op.drop_index(batch_op.f('pay_order_id'))
+
+ op.drop_table('pay_order_callback_data')
+ op.drop_table('images')
+ with op.batch_alter_table('stat_daily_member', schema=None) as batch_op:
+ batch_op.drop_index(batch_op.f('idx_date_member_id'))
+
+ op.drop_table('stat_daily_member')
+ op.drop_table('runoob_tbl')
+ with op.batch_alter_table('food_sale_change_log', schema=None) as batch_op:
+ batch_op.drop_index(batch_op.f('idx_food_id_id'))
+
+ op.drop_table('food_sale_change_log')
+ op.drop_table('dongtai_list')
+ with op.batch_alter_table('stat_daily_food', schema=None) as batch_op:
+ batch_op.drop_index(batch_op.f('date_food_id'))
+
+ op.drop_table('stat_daily_food')
+ op.drop_table('app_error_log')
+ op.drop_table('mendianuserinfo')
+ op.drop_table('queue_list')
+ op.drop_table('wx_share_history')
+ with op.batch_alter_table('container_orchestration_assistant', schema=None) as batch_op:
+ batch_op.drop_index(batch_op.f('idx_category'))
+ batch_op.drop_index(batch_op.f('idx_industry'))
+ batch_op.drop_index(batch_op.f('idx_profession'))
+
+ op.drop_table('container_orchestration_assistant')
+ with op.batch_alter_table('member_cart', schema=None) as batch_op:
+ batch_op.drop_index(batch_op.f('idx_member_id'))
+
+ op.drop_table('member_cart')
+ with op.batch_alter_table('pay_order_item', schema=None) as batch_op:
+ batch_op.drop_index(batch_op.f('id_order_id'))
+ batch_op.drop_index(batch_op.f('idx_food_id'))
+
+ op.drop_table('pay_order_item')
+ with op.batch_alter_table('user', schema=None) as batch_op:
+ batch_op.drop_index(batch_op.f('login_name'))
+
+ # ### end Alembic commands ###
+
+
+def downgrade():
+ # ### commands auto generated by Alembic - please adjust! ###
+ with op.batch_alter_table('user', schema=None) as batch_op:
+ batch_op.create_index(batch_op.f('login_name'), ['login_name'], unique=True)
+
+ op.create_table('pay_order_item',
+ sa.Column('id', mysql.INTEGER(display_width=11, unsigned=True), autoincrement=True, nullable=False),
+ sa.Column('pay_order_id', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='订单id'),
+ sa.Column('member_id', mysql.BIGINT(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='会员id'),
+ sa.Column('quantity', mysql.INTEGER(display_width=11), server_default=sa.text("'1'"), autoincrement=False, nullable=False, comment='购买数量 默认1份'),
+ sa.Column('price', mysql.DECIMAL(precision=10, scale=2), server_default=sa.text("'0.00'"), nullable=False, comment='商品总价格,售价 * 数量'),
+ sa.Column('food_id', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='美食表id'),
+ sa.Column('note', mysql.TEXT(), nullable=False, comment='备注信息'),
+ sa.Column('status', mysql.TINYINT(display_width=1), server_default=sa.text("'1'"), autoincrement=False, nullable=False, comment='状态:1:成功 0 失败'),
+ sa.Column('updated_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='最近一次更新时间'),
+ sa.Column('created_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='插入时间'),
+ sa.PrimaryKeyConstraint('id'),
+ comment='订单详情表',
+ mysql_comment='订单详情表',
+ mysql_default_charset='utf8mb4',
+ mysql_engine='InnoDB'
+ )
+ with op.batch_alter_table('pay_order_item', schema=None) as batch_op:
+ batch_op.create_index(batch_op.f('idx_food_id'), ['food_id'], unique=False)
+ batch_op.create_index(batch_op.f('id_order_id'), ['pay_order_id'], unique=False)
+
+ op.create_table('member_cart',
+ sa.Column('id', mysql.INTEGER(display_width=11, unsigned=True), autoincrement=True, nullable=False),
+ sa.Column('member_id', mysql.BIGINT(display_width=20), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='会员id'),
+ sa.Column('food_id', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='商品id'),
+ sa.Column('quantity', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='数量'),
+ sa.Column('updated_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='最后一次更新时间'),
+ sa.Column('created_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='插入时间'),
+ sa.PrimaryKeyConstraint('id'),
+ comment='购物车',
+ mysql_comment='购物车',
+ mysql_default_charset='utf8mb4',
+ mysql_engine='InnoDB'
+ )
+ with op.batch_alter_table('member_cart', schema=None) as batch_op:
+ batch_op.create_index(batch_op.f('idx_member_id'), ['member_id'], unique=False)
+
+ op.create_table('container_orchestration_assistant',
+ sa.Column('id', mysql.BIGINT(display_width=20), autoincrement=True, nullable=False, comment='助手ID'),
+ sa.Column('name', mysql.VARCHAR(length=100), server_default=sa.text("''"), nullable=False, comment='助手名称'),
+ sa.Column('description', mysql.VARCHAR(length=255), server_default=sa.text("''"), nullable=False, comment='助手描述'),
+ sa.Column('category', mysql.VARCHAR(length=50), server_default=sa.text("''"), nullable=False, comment='分类(架构设计)'),
+ sa.Column('industry', mysql.VARCHAR(length=50), server_default=sa.text("''"), nullable=False, comment='行业(技术研发)'),
+ sa.Column('profession', mysql.VARCHAR(length=50), server_default=sa.text("''"), nullable=False, comment='职业(高级工程师)'),
+ sa.Column('sub_category', mysql.VARCHAR(length=50), server_default=sa.text("''"), nullable=False, comment='子分类(容器编排)'),
+ sa.Column('system_prompt', mysql.TEXT(), nullable=False, comment='系统提示词(容器化需求转换规则)'),
+ sa.Column('status', mysql.TINYINT(display_width=1), server_default=sa.text("'1'"), autoincrement=False, nullable=False, comment='状态:1-有效,0-无效'),
+ sa.Column('updated_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'), nullable=False, comment='最后一次更新时间'),
+ sa.Column('created_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='创建时间'),
+ sa.PrimaryKeyConstraint('id'),
+ comment='Python容器编排助手表',
+ mysql_comment='Python容器编排助手表',
+ mysql_default_charset='utf8mb4',
+ mysql_engine='InnoDB'
+ )
+ with op.batch_alter_table('container_orchestration_assistant', schema=None) as batch_op:
+ batch_op.create_index(batch_op.f('idx_profession'), ['profession'], unique=False)
+ batch_op.create_index(batch_op.f('idx_industry'), ['industry'], unique=False)
+ batch_op.create_index(batch_op.f('idx_category'), ['category'], unique=False)
+
+ op.create_table('wx_share_history',
+ sa.Column('id', mysql.INTEGER(display_width=11, unsigned=True), autoincrement=True, nullable=False),
+ sa.Column('member_id', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='会员id'),
+ sa.Column('share_url', mysql.VARCHAR(length=200), server_default=sa.text("''"), nullable=False, comment='分享的页面url'),
+ sa.Column('created_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='创建时间'),
+ sa.PrimaryKeyConstraint('id'),
+ comment='微信分享记录',
+ mysql_comment='微信分享记录',
+ mysql_default_charset='utf8mb4',
+ mysql_engine='InnoDB'
+ )
+ op.create_table('queue_list',
+ sa.Column('id', mysql.INTEGER(display_width=11, unsigned=True), autoincrement=True, nullable=False),
+ sa.Column('queue_name', mysql.VARCHAR(length=30), server_default=sa.text("''"), nullable=False, comment='队列名字'),
+ sa.Column('data', mysql.VARCHAR(length=500), server_default=sa.text("''"), nullable=False, comment='队列数据'),
+ sa.Column('status', mysql.TINYINT(display_width=1), server_default=sa.text("'-1'"), autoincrement=False, nullable=False, comment='状态 -1 待处理 1 已处理'),
+ sa.Column('updated_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='最后一次更新时间'),
+ sa.Column('created_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='插入时间'),
+ sa.PrimaryKeyConstraint('id'),
+ comment='事件队列表',
+ mysql_comment='事件队列表',
+ mysql_default_charset='utf8mb4',
+ mysql_engine='InnoDB'
+ )
+ op.create_table('mendianuserinfo',
+ sa.Column('id', mysql.INTEGER(display_width=11, unsigned=True), autoincrement=True, nullable=False),
+ sa.Column('nickname', mysql.VARCHAR(length=20), server_default=sa.text("''"), nullable=False, comment='会员名'),
+ sa.Column('mobile', mysql.VARCHAR(length=20), server_default=sa.text("''"), nullable=False, comment='会员手机号码'),
+ sa.Column('storename', mysql.VARCHAR(length=20), server_default=sa.text("'0'"), nullable=False, comment='店铺名称'),
+ sa.Column('updated_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='最后一次更新时间'),
+ sa.Column('created_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='插入时间'),
+ sa.PrimaryKeyConstraint('id'),
+ comment='会员表',
+ mysql_comment='会员表',
+ mysql_default_charset='utf8mb4',
+ mysql_engine='InnoDB'
+ )
+ op.create_table('app_error_log',
+ sa.Column('id', mysql.INTEGER(display_width=11, unsigned=True), autoincrement=True, nullable=False),
+ sa.Column('referer_url', mysql.VARCHAR(length=255), server_default=sa.text("''"), nullable=False, comment='当前访问的refer'),
+ sa.Column('target_url', mysql.VARCHAR(length=255), server_default=sa.text("''"), nullable=False, comment='访问的url'),
+ sa.Column('query_params', mysql.TEXT(), nullable=False, comment='get和post参数'),
+ sa.Column('content', mysql.LONGTEXT(), nullable=False, comment='日志内容'),
+ sa.Column('created_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='插入时间'),
+ sa.PrimaryKeyConstraint('id'),
+ comment='app错误日表',
+ mysql_comment='app错误日表',
+ mysql_default_charset='utf8mb4',
+ mysql_engine='InnoDB'
+ )
+ op.create_table('stat_daily_food',
+ sa.Column('id', mysql.INTEGER(display_width=11, unsigned=True), autoincrement=True, nullable=False),
+ sa.Column('date', sa.DATE(), nullable=False),
+ sa.Column('food_id', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='菜品id'),
+ sa.Column('total_count', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='售卖总数量'),
+ sa.Column('total_pay_money', mysql.DECIMAL(precision=10, scale=2), server_default=sa.text("'0.00'"), nullable=False, comment='总售卖金额'),
+ sa.Column('updated_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='最后一次更新时间'),
+ sa.Column('created_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='插入时间'),
+ sa.PrimaryKeyConstraint('id'),
+ comment='书籍售卖日统计',
+ mysql_comment='书籍售卖日统计',
+ mysql_default_charset='utf8mb4',
+ mysql_engine='InnoDB'
+ )
+ with op.batch_alter_table('stat_daily_food', schema=None) as batch_op:
+ batch_op.create_index(batch_op.f('date_food_id'), ['date', 'food_id'], unique=False)
+
+ op.create_table('dongtai_list',
+ sa.Column('listid', mysql.INTEGER(display_width=10, unsigned=True), autoincrement=True, nullable=False),
+ sa.Column('date', mysql.VARCHAR(length=100), server_default=sa.text("''"), nullable=False),
+ sa.Column('title', mysql.VARCHAR(length=40), server_default=sa.text("''"), nullable=False),
+ sa.Column('imgSrc', mysql.VARCHAR(length=100), server_default=sa.text("''"), nullable=False),
+ sa.Column('avatar', mysql.VARCHAR(length=100), server_default=sa.text("''"), nullable=False),
+ sa.Column('content', mysql.VARCHAR(length=128), server_default=sa.text("''"), nullable=False),
+ sa.Column('reading', mysql.VARCHAR(length=128), server_default=sa.text("''"), nullable=False),
+ sa.Column('collection', mysql.VARCHAR(length=128), server_default=sa.text("''"), nullable=False),
+ sa.Column('headImgSrc', mysql.VARCHAR(length=100), nullable=False),
+ sa.Column('author', mysql.VARCHAR(length=100), server_default=sa.text("''"), nullable=False),
+ sa.Column('dateTime', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False),
+ sa.Column('postId', mysql.INTEGER(display_width=10), autoincrement=False, nullable=False),
+ sa.PrimaryKeyConstraint('listid'),
+ mysql_default_charset='utf8',
+ mysql_engine='InnoDB'
+ )
+ op.create_table('food_sale_change_log',
+ sa.Column('id', mysql.INTEGER(display_width=11, unsigned=True), autoincrement=True, nullable=False),
+ sa.Column('food_id', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='商品id'),
+ sa.Column('quantity', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='售卖数量'),
+ sa.Column('price', mysql.DECIMAL(precision=10, scale=2), server_default=sa.text("'0.00'"), nullable=False, comment='售卖金额'),
+ sa.Column('member_id', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='会员id'),
+ sa.Column('created_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='售卖时间'),
+ sa.PrimaryKeyConstraint('id'),
+ comment='商品销售情况',
+ mysql_comment='商品销售情况',
+ mysql_default_charset='utf8mb4',
+ mysql_engine='InnoDB'
+ )
+ with op.batch_alter_table('food_sale_change_log', schema=None) as batch_op:
+ batch_op.create_index(batch_op.f('idx_food_id_id'), ['food_id'], unique=False)
+
+ op.create_table('runoob_tbl',
+ sa.Column('runoob_id', mysql.INTEGER(display_width=10, unsigned=True), autoincrement=True, nullable=False),
+ sa.Column('runoob_title', mysql.VARCHAR(length=100), nullable=False),
+ sa.Column('runoob_author', mysql.VARCHAR(length=40), nullable=False),
+ sa.Column('submission_date', sa.DATE(), nullable=True),
+ sa.PrimaryKeyConstraint('runoob_id'),
+ mysql_default_charset='utf8',
+ mysql_engine='InnoDB'
+ )
+ op.create_table('stat_daily_member',
+ sa.Column('id', mysql.INTEGER(display_width=11, unsigned=True), autoincrement=True, nullable=False),
+ sa.Column('date', sa.DATE(), nullable=False, comment='日期'),
+ sa.Column('member_id', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='会员id'),
+ sa.Column('total_shared_count', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='当日分享总次数'),
+ sa.Column('total_pay_money', mysql.DECIMAL(precision=10, scale=2), server_default=sa.text("'0.00'"), nullable=False, comment='当日付款总金额'),
+ sa.Column('updated_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='最后一次更新时间'),
+ sa.Column('created_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='插入时间'),
+ sa.PrimaryKeyConstraint('id'),
+ comment='会员日统计',
+ mysql_comment='会员日统计',
+ mysql_default_charset='utf8mb4',
+ mysql_engine='InnoDB'
+ )
+ with op.batch_alter_table('stat_daily_member', schema=None) as batch_op:
+ batch_op.create_index(batch_op.f('idx_date_member_id'), ['date', 'member_id'], unique=False)
+
+ op.create_table('images',
+ sa.Column('id', mysql.INTEGER(display_width=11, unsigned=True), autoincrement=True, nullable=False),
+ sa.Column('file_key', mysql.VARCHAR(length=60), server_default=sa.text("''"), nullable=False, comment='文件名'),
+ sa.Column('created_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='插入时间'),
+ sa.PrimaryKeyConstraint('id'),
+ mysql_default_charset='utf8mb4',
+ mysql_engine='InnoDB'
+ )
+ op.create_table('pay_order_callback_data',
+ sa.Column('id', mysql.INTEGER(display_width=11), autoincrement=True, nullable=False),
+ sa.Column('pay_order_id', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='支付订单id'),
+ sa.Column('pay_data', mysql.TEXT(), nullable=False, comment='支付回调信息'),
+ sa.Column('refund_data', mysql.TEXT(), nullable=False, comment='退款回调信息'),
+ sa.Column('updated_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='最后一次更新时间'),
+ sa.Column('created_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='创建时间'),
+ sa.PrimaryKeyConstraint('id'),
+ mysql_default_charset='utf8mb4',
+ mysql_engine='InnoDB'
+ )
+ with op.batch_alter_table('pay_order_callback_data', schema=None) as batch_op:
+ batch_op.create_index(batch_op.f('pay_order_id'), ['pay_order_id'], unique=True)
+
+ op.create_table('stat_daily_site',
+ sa.Column('id', mysql.INTEGER(display_width=11, unsigned=True), autoincrement=True, nullable=False),
+ sa.Column('date', sa.DATE(), nullable=False, comment='日期'),
+ sa.Column('total_pay_money', mysql.DECIMAL(precision=10, scale=2), server_default=sa.text("'0.00'"), nullable=False, comment='当日应收总金额'),
+ sa.Column('total_member_count', mysql.INTEGER(display_width=11), autoincrement=False, nullable=False, comment='会员总数'),
+ sa.Column('total_new_member_count', mysql.INTEGER(display_width=11), autoincrement=False, nullable=False, comment='当日新增会员数'),
+ sa.Column('total_order_count', mysql.INTEGER(display_width=11), autoincrement=False, nullable=False, comment='当日订单数'),
+ sa.Column('total_shared_count', mysql.INTEGER(display_width=11), autoincrement=False, nullable=False),
+ sa.Column('updated_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='最后一次更新时间'),
+ sa.Column('created_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='插入时间'),
+ sa.PrimaryKeyConstraint('id'),
+ comment='全站日统计',
+ mysql_comment='全站日统计',
+ mysql_default_charset='utf8mb4',
+ mysql_engine='InnoDB'
+ )
+ with op.batch_alter_table('stat_daily_site', schema=None) as batch_op:
+ batch_op.create_index(batch_op.f('idx_date'), ['date'], unique=False)
+
+ op.create_table('member_address',
+ sa.Column('id', mysql.INTEGER(display_width=11, unsigned=True), autoincrement=True, nullable=False),
+ sa.Column('member_id', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='会员id'),
+ sa.Column('nickname', mysql.VARCHAR(length=20), server_default=sa.text("''"), nullable=False, comment='收货人姓名'),
+ sa.Column('mobile', mysql.VARCHAR(length=11), server_default=sa.text("''"), nullable=False, comment='收货人手机号码'),
+ sa.Column('province_id', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='省id'),
+ sa.Column('province_str', mysql.VARCHAR(length=50), server_default=sa.text("''"), nullable=False, comment='省名称'),
+ sa.Column('city_id', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='城市id'),
+ sa.Column('city_str', mysql.VARCHAR(length=50), server_default=sa.text("''"), nullable=False, comment='市名称'),
+ sa.Column('area_id', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='区域id'),
+ sa.Column('area_str', mysql.VARCHAR(length=50), server_default=sa.text("''"), nullable=False, comment='区域名称'),
+ sa.Column('address', mysql.VARCHAR(length=100), server_default=sa.text("''"), nullable=False, comment='详细地址'),
+ sa.Column('status', mysql.TINYINT(display_width=1), server_default=sa.text("'1'"), autoincrement=False, nullable=False, comment='是否有效 1:有效 0:无效'),
+ sa.Column('is_default', mysql.TINYINT(display_width=1), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='默认地址'),
+ sa.Column('updated_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='最后一次更新时间'),
+ sa.Column('created_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='插入时间'),
+ sa.PrimaryKeyConstraint('id'),
+ comment='会员收货地址',
+ mysql_comment='会员收货地址',
+ mysql_default_charset='utf8mb4',
+ mysql_engine='InnoDB'
+ )
+ with op.batch_alter_table('member_address', schema=None) as batch_op:
+ batch_op.create_index(batch_op.f('idx_member_id_status'), ['member_id', 'status'], unique=False)
+
+ op.create_table('app_access_log',
+ sa.Column('id', mysql.INTEGER(display_width=11), autoincrement=True, nullable=False),
+ sa.Column('uid', mysql.BIGINT(display_width=20), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='uid'),
+ sa.Column('referer_url', mysql.VARCHAR(length=255), server_default=sa.text("''"), nullable=False, comment='当前访问的refer'),
+ sa.Column('target_url', mysql.VARCHAR(length=255), server_default=sa.text("''"), nullable=False, comment='访问的url'),
+ sa.Column('query_params', mysql.TEXT(), nullable=False, comment='get和post参数'),
+ sa.Column('ua', mysql.VARCHAR(length=255), server_default=sa.text("''"), nullable=False, comment='访问ua'),
+ sa.Column('ip', mysql.VARCHAR(length=32), server_default=sa.text("''"), nullable=False, comment='访问ip'),
+ sa.Column('note', mysql.VARCHAR(length=1000), server_default=sa.text("''"), nullable=False, comment='json格式备注字段'),
+ sa.Column('created_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False),
+ sa.PrimaryKeyConstraint('id'),
+ comment='用户访问记录表',
+ mysql_comment='用户访问记录表',
+ mysql_default_charset='utf8mb4',
+ mysql_engine='InnoDB'
+ )
+ with op.batch_alter_table('app_access_log', schema=None) as batch_op:
+ batch_op.create_index(batch_op.f('idx_uid'), ['uid'], unique=False)
+
+ op.create_table('member',
+ sa.Column('id', mysql.INTEGER(display_width=11), autoincrement=True, nullable=False),
+ sa.Column('openid', mysql.VARCHAR(length=80), nullable=False, comment='微信openid'),
+ sa.Column('nickname', mysql.VARCHAR(length=100), nullable=True, comment='用户昵称'),
+ sa.Column('mobile', mysql.VARCHAR(length=11), nullable=True, comment='手机号码'),
+ sa.Column('sex', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='性别 1:男 2:女'),
+ sa.Column('avatar', mysql.VARCHAR(length=200), server_default=sa.text("''"), nullable=False, comment='头像'),
+ sa.Column('salt', mysql.VARCHAR(length=32), nullable=False, comment='随机加密串'),
+ sa.Column('reg_ip', mysql.VARCHAR(length=100), server_default=sa.text("''"), nullable=False, comment='注册IP'),
+ sa.Column('status', mysql.INTEGER(display_width=11), server_default=sa.text("'1'"), autoincrement=False, nullable=False, comment='状态 1:有效 0:无效'),
+ sa.Column('updated_time', mysql.DATETIME(), server_default=sa.text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'), nullable=False, comment='最后一次更新时间'),
+ sa.Column('created_time', mysql.DATETIME(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='创建时间'),
+ sa.PrimaryKeyConstraint('id'),
+ comment='会员表',
+ mysql_comment='会员表',
+ mysql_default_charset='utf8mb4',
+ mysql_engine='InnoDB'
+ )
+ with op.batch_alter_table('member', schema=None) as batch_op:
+ batch_op.create_index(batch_op.f('idx_openid'), ['openid'], unique=False)
+
+ op.create_table('food_cat',
+ sa.Column('id', mysql.INTEGER(display_width=11, unsigned=True), autoincrement=True, nullable=False),
+ sa.Column('name', mysql.VARCHAR(length=50), server_default=sa.text("''"), nullable=False, comment='类别名称'),
+ sa.Column('weight', mysql.TINYINT(display_width=4), server_default=sa.text("'1'"), autoincrement=False, nullable=False, comment='权重'),
+ sa.Column('status', mysql.TINYINT(display_width=1), server_default=sa.text("'1'"), autoincrement=False, nullable=False, comment='状态 1:有效 0:无效'),
+ sa.Column('updated_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='最后一次更新时间'),
+ sa.Column('created_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='插入时间'),
+ sa.PrimaryKeyConstraint('id'),
+ comment='食品分类',
+ mysql_comment='食品分类',
+ mysql_default_charset='utf8mb4',
+ mysql_engine='InnoDB'
+ )
+ with op.batch_alter_table('food_cat', schema=None) as batch_op:
+ batch_op.create_index(batch_op.f('idx_name'), ['id'], unique=True)
+
+ op.create_table('food',
+ sa.Column('id', mysql.INTEGER(display_width=11, unsigned=True), autoincrement=True, nullable=False),
+ sa.Column('cat_id', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='分类id'),
+ sa.Column('name', mysql.VARCHAR(length=100), server_default=sa.text("''"), nullable=False, comment='书籍名称'),
+ sa.Column('price', mysql.DECIMAL(precision=10, scale=2), server_default=sa.text("'0.00'"), nullable=False, comment='售卖金额'),
+ sa.Column('main_image', mysql.VARCHAR(length=100), server_default=sa.text("''"), nullable=False, comment='主图'),
+ sa.Column('summary', mysql.VARCHAR(length=10000), server_default=sa.text("''"), nullable=False, comment='描述'),
+ sa.Column('stock', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='库存量'),
+ sa.Column('tags', mysql.VARCHAR(length=200), server_default=sa.text("''"), nullable=False, comment='tag关键字,以","连接'),
+ sa.Column('status', mysql.TINYINT(display_width=1), server_default=sa.text("'1'"), autoincrement=False, nullable=False, comment='状态 1:有效 0:无效'),
+ sa.Column('month_count', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='月销售数量'),
+ sa.Column('total_count', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='总销售量'),
+ sa.Column('view_count', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='总浏览次数'),
+ sa.Column('comment_count', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='总评论量'),
+ sa.Column('updated_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='最后更新时间'),
+ sa.Column('created_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='最后插入时间'),
+ sa.PrimaryKeyConstraint('id'),
+ comment='食品表',
+ mysql_comment='食品表',
+ mysql_default_charset='utf8mb4',
+ mysql_engine='InnoDB'
+ )
+ op.create_table('member_comments',
+ sa.Column('id', mysql.INTEGER(display_width=11, unsigned=True), autoincrement=True, nullable=False),
+ sa.Column('member_id', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='会员id'),
+ sa.Column('food_ids', mysql.VARCHAR(length=200), server_default=sa.text("''"), nullable=False, comment='商品ids'),
+ sa.Column('pay_order_id', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='订单id'),
+ sa.Column('score', mysql.TINYINT(display_width=4), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='评分'),
+ sa.Column('content', mysql.VARCHAR(length=200), server_default=sa.text("''"), nullable=False, comment='评论内容'),
+ sa.Column('created_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'), nullable=False, comment='插入时间'),
+ sa.PrimaryKeyConstraint('id'),
+ comment='会员评论表',
+ mysql_comment='会员评论表',
+ mysql_default_charset='utf8mb4',
+ mysql_engine='InnoDB'
+ )
+ with op.batch_alter_table('member_comments', schema=None) as batch_op:
+ batch_op.create_index(batch_op.f('idx_member_id'), ['member_id'], unique=False)
+
+ op.create_table('mendianusertwo',
+ sa.Column('id', mysql.INTEGER(display_width=100), server_default=sa.text("'0'"), autoincrement=False, nullable=False),
+ sa.Column('name', mysql.VARCHAR(length=100), nullable=False),
+ sa.Column('phone', mysql.VARCHAR(length=100), nullable=False),
+ sa.Column('storename', mysql.VARCHAR(length=100), nullable=False),
+ sa.PrimaryKeyConstraint('id'),
+ mysql_default_charset='utf8mb4',
+ mysql_engine='InnoDB'
+ )
+ op.create_table('pay_order',
+ sa.Column('id', mysql.INTEGER(display_width=11, unsigned=True), autoincrement=True, nullable=False),
+ sa.Column('order_sn', mysql.VARCHAR(length=40), server_default=sa.text("''"), nullable=False, comment='随机订单号'),
+ sa.Column('member_id', mysql.BIGINT(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='会员id'),
+ sa.Column('total_price', mysql.DECIMAL(precision=10, scale=2), server_default=sa.text("'0.00'"), nullable=False, comment='订单应付金额'),
+ sa.Column('yun_price', mysql.DECIMAL(precision=10, scale=2), server_default=sa.text("'0.00'"), nullable=False, comment='运费金额'),
+ sa.Column('pay_price', mysql.DECIMAL(precision=10, scale=2), server_default=sa.text("'0.00'"), nullable=False, comment='订单实付金额'),
+ sa.Column('pay_sn', mysql.VARCHAR(length=128), server_default=sa.text("''"), nullable=False, comment='第三方流水号'),
+ sa.Column('prepay_id', mysql.VARCHAR(length=128), server_default=sa.text("''"), nullable=False, comment='第三方预付id'),
+ sa.Column('note', mysql.TEXT(), nullable=False, comment='备注信息'),
+ sa.Column('status', mysql.TINYINT(display_width=4), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='1:支付完成 0 无效 -1 申请退款 -2 退款中 -9 退款成功 -8 待支付 -7 完成支付待确认'),
+ sa.Column('express_status', mysql.TINYINT(display_width=4), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='快递状态,-8 待支付 -7 已付款待发货 1:确认收货 0:失败'),
+ sa.Column('express_address_id', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='快递地址id'),
+ sa.Column('express_info', mysql.VARCHAR(length=1000), server_default=sa.text("''"), nullable=False, comment='快递信息'),
+ sa.Column('comment_status', mysql.TINYINT(display_width=1), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='评论状态'),
+ sa.Column('pay_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='付款到账时间'),
+ sa.Column('updated_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='最近一次更新时间'),
+ sa.Column('created_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='插入时间'),
+ sa.PrimaryKeyConstraint('id'),
+ comment='在线购买订单表',
+ mysql_comment='在线购买订单表',
+ mysql_default_charset='utf8mb4',
+ mysql_engine='InnoDB'
+ )
+ with op.batch_alter_table('pay_order', schema=None) as batch_op:
+ batch_op.create_index(batch_op.f('idx_order_sn'), ['order_sn'], unique=True)
+ batch_op.create_index(batch_op.f('idx_member_id_status'), ['member_id', 'status'], unique=False)
+
+ op.create_table('oauth_access_token',
+ sa.Column('id', mysql.INTEGER(display_width=11, unsigned=True), autoincrement=True, nullable=False),
+ sa.Column('access_token', mysql.VARCHAR(length=600), server_default=sa.text("''"), nullable=False),
+ sa.Column('expired_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='过期时间'),
+ sa.Column('created_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='插入时间'),
+ sa.PrimaryKeyConstraint('id'),
+ comment='微信的access_token 用户调用其他接口的',
+ mysql_comment='微信的access_token 用户调用其他接口的',
+ mysql_default_charset='utf8mb4',
+ mysql_engine='InnoDB'
+ )
+ with op.batch_alter_table('oauth_access_token', schema=None) as batch_op:
+ batch_op.create_index(batch_op.f('idx_expired_time'), ['expired_time'], unique=False)
+
+ op.create_table('food_stock_change_log',
+ sa.Column('id', mysql.INTEGER(display_width=11, unsigned=True), autoincrement=True, nullable=False),
+ sa.Column('food_id', mysql.INTEGER(display_width=11), autoincrement=False, nullable=False, comment='商品id'),
+ sa.Column('unit', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='变更多少'),
+ sa.Column('total_stock', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='变更之后总量'),
+ sa.Column('note', mysql.VARCHAR(length=100), server_default=sa.text("''"), nullable=False, comment='备注字段'),
+ sa.Column('created_time', mysql.DATETIME(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='插入时间'),
+ sa.PrimaryKeyConstraint('id'),
+ comment='数据库存变更表',
+ mysql_comment='数据库存变更表',
+ mysql_default_charset='utf8mb4',
+ mysql_engine='InnoDB'
+ )
+ with op.batch_alter_table('food_stock_change_log', schema=None) as batch_op:
+ batch_op.create_index(batch_op.f('idx_food_id'), ['food_id'], unique=False)
+
+ op.create_table('oauth_member_bind',
+ sa.Column('id', mysql.INTEGER(display_width=11, unsigned=True), autoincrement=True, nullable=False),
+ sa.Column('member_id', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='会员id'),
+ sa.Column('client_type', mysql.VARCHAR(length=20), server_default=sa.text("''"), nullable=False, comment='客户端来源类型。qq,weibo,weixin'),
+ sa.Column('type', mysql.TINYINT(display_width=3), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='类型 type 1:wechat '),
+ sa.Column('openid', mysql.VARCHAR(length=80), server_default=sa.text("''"), nullable=False, comment='第三方id'),
+ sa.Column('unionid', mysql.VARCHAR(length=100), server_default=sa.text("''"), nullable=False),
+ sa.Column('extra', mysql.TEXT(), nullable=False, comment='额外字段'),
+ sa.Column('updated_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='最后更新时间'),
+ sa.Column('created_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='插入时间'),
+ sa.PrimaryKeyConstraint('id'),
+ comment='第三方登录绑定关系',
+ mysql_comment='第三方登录绑定关系',
+ mysql_default_charset='utf8mb4',
+ mysql_engine='InnoDB'
+ )
+ with op.batch_alter_table('oauth_member_bind', schema=None) as batch_op:
+ batch_op.create_index(batch_op.f('idx_type_openid'), ['type', 'openid'], unique=False)
+
+ op.create_table('deviceinfo',
+ sa.Column('id', mysql.INTEGER(display_width=11, unsigned=True), autoincrement=True, nullable=False),
+ sa.Column('nickname', mysql.VARCHAR(length=100), server_default=sa.text("''"), nullable=False, comment='会员名'),
+ sa.Column('jiguang', mysql.VARCHAR(length=100), server_default=sa.text("''"), nullable=False, comment='极光id'),
+ sa.Column('version', mysql.VARCHAR(length=100), server_default=sa.text("''"), nullable=False, comment='版本号'),
+ sa.Column('xiaoqu', mysql.VARCHAR(length=100), server_default=sa.text("''"), nullable=False, comment='小区'),
+ sa.Column('louhao', mysql.VARCHAR(length=100), server_default=sa.text("''"), nullable=False, comment='楼号'),
+ sa.Column('danyuan', mysql.VARCHAR(length=100), server_default=sa.text("''"), nullable=False, comment='单元号'),
+ sa.Column('jingdu', mysql.VARCHAR(length=100), server_default=sa.text("''"), nullable=False, comment='经度'),
+ sa.Column('weidu', mysql.VARCHAR(length=100), server_default=sa.text("''"), nullable=False, comment='纬度'),
+ sa.Column('snnum', mysql.VARCHAR(length=100), server_default=sa.text("''"), nullable=False, comment='sn号'),
+ sa.Column('mobile', mysql.VARCHAR(length=11), server_default=sa.text("''"), nullable=False, comment='会员手机号码'),
+ sa.Column('reg_ip', mysql.VARCHAR(length=100), server_default=sa.text("''"), nullable=False, comment='注册ip'),
+ sa.Column('updated_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='最后一次更新时间'),
+ sa.Column('created_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='插入时间'),
+ sa.PrimaryKeyConstraint('id'),
+ comment='设备注册表',
+ mysql_comment='设备注册表',
+ mysql_default_charset='utf8mb4',
+ mysql_engine='InnoDB'
+ )
+ # ### end Alembic commands ###
diff --git a/run_dev.py b/run_dev.py
index b6494f8..5fb9ec0 100644
--- a/run_dev.py
+++ b/run_dev.py
@@ -3,4 +3,4 @@ from src.flask_prompt_master import create_app
app = create_app()
if __name__ == '__main__':
- app.run(host='0.0.0.0', port=5000, debug=True)
\ No newline at end of file
+ app.run(host='0.0.0.0', port=5002, debug=True)
\ No newline at end of file
diff --git a/run_dev_fixed.py b/run_dev_fixed.py
index 25fd1cf..c6878a8 100644
--- a/run_dev_fixed.py
+++ b/run_dev_fixed.py
@@ -8,7 +8,7 @@ if __name__ == '__main__':
app = create_app()
app.run(
host='0.0.0.0', # 绑定到所有地址
- port=5000,
+ port=5002,
debug=True,
use_reloader=False # 禁用自动重载,避免连接问题
)
diff --git a/run_production_public.py b/run_production_public.py
index 37df20e..0afa03f 100644
--- a/run_production_public.py
+++ b/run_production_public.py
@@ -17,15 +17,15 @@ def main():
app = create_app()
# 获取端口号(支持环境变量配置)
- port = int(os.environ.get('PORT', 5001))
+ port = int(os.environ.get('PORT', 5002))
print("=" * 60)
print("🚀 Flask 提示词大师 - 生产环境启动(外网访问)")
print("=" * 60)
print(f"📊 环境: {os.environ.get('FLASK_ENV', 'unknown')}")
print(f"🌐 服务器: Flask 内置服务器")
- print(f"🔗 内网地址: http://10.0.4.13:{port}")
- print(f"🌍 外网地址: http://101.43.95.130:{port}")
+ print(f"🔗 内网地址: http://10.0.4.13:5002")
+ print(f"🌍 外网地址: http://101.43.95.130:5002")
print(f"📝 日志: 控制台输出")
print("=" * 60)
print("✅ 服务器启动中...")
diff --git a/run_production_simple.py b/run_production_simple.py
index 98095bf..23462ad 100644
--- a/run_production_simple.py
+++ b/run_production_simple.py
@@ -33,7 +33,7 @@ def main():
# 启动 Flask 内置服务器(生产模式配置)
app.run(
host='0.0.0.0',
- port=5001, # 修改端口为5001
+ port=5002, # 修改端口为5002
debug=False, # 生产环境关闭调试
threaded=True, # 启用多线程
use_reloader=False # 关闭自动重载
diff --git a/src/flask_prompt_master/__pycache__/__init__.cpython-312.pyc b/src/flask_prompt_master/__pycache__/__init__.cpython-312.pyc
index a5f8e72..bf8f8f0 100644
Binary files a/src/flask_prompt_master/__pycache__/__init__.cpython-312.pyc and b/src/flask_prompt_master/__pycache__/__init__.cpython-312.pyc differ
diff --git a/src/flask_prompt_master/__pycache__/__init__.cpython-36.pyc b/src/flask_prompt_master/__pycache__/__init__.cpython-36.pyc
new file mode 100644
index 0000000..fc66c3a
Binary files /dev/null and b/src/flask_prompt_master/__pycache__/__init__.cpython-36.pyc differ
diff --git a/src/flask_prompt_master/__pycache__/config.cpython-312.pyc b/src/flask_prompt_master/__pycache__/config.cpython-312.pyc
index 7463bc9..581133f 100644
Binary files a/src/flask_prompt_master/__pycache__/config.cpython-312.pyc and b/src/flask_prompt_master/__pycache__/config.cpython-312.pyc differ
diff --git a/src/flask_prompt_master/forms/__pycache__/__init__.cpython-312.pyc b/src/flask_prompt_master/forms/__pycache__/__init__.cpython-312.pyc
index ce089b4..1062be3 100644
Binary files a/src/flask_prompt_master/forms/__pycache__/__init__.cpython-312.pyc and b/src/flask_prompt_master/forms/__pycache__/__init__.cpython-312.pyc differ
diff --git a/src/flask_prompt_master/forms/__pycache__/forms.cpython-312.pyc b/src/flask_prompt_master/forms/__pycache__/forms.cpython-312.pyc
index 44ac0a1..c99ee1c 100644
Binary files a/src/flask_prompt_master/forms/__pycache__/forms.cpython-312.pyc and b/src/flask_prompt_master/forms/__pycache__/forms.cpython-312.pyc differ
diff --git a/src/flask_prompt_master/models/__pycache__/__init__.cpython-312.pyc b/src/flask_prompt_master/models/__pycache__/__init__.cpython-312.pyc
index efedd29..531e32d 100644
Binary files a/src/flask_prompt_master/models/__pycache__/__init__.cpython-312.pyc and b/src/flask_prompt_master/models/__pycache__/__init__.cpython-312.pyc differ
diff --git a/src/flask_prompt_master/models/__pycache__/favorites.cpython-312.pyc b/src/flask_prompt_master/models/__pycache__/favorites.cpython-312.pyc
index 0d11e38..d967b66 100644
Binary files a/src/flask_prompt_master/models/__pycache__/favorites.cpython-312.pyc and b/src/flask_prompt_master/models/__pycache__/favorites.cpython-312.pyc differ
diff --git a/src/flask_prompt_master/models/__pycache__/models.cpython-312.pyc b/src/flask_prompt_master/models/__pycache__/models.cpython-312.pyc
index 40f6fa8..b7b3367 100644
Binary files a/src/flask_prompt_master/models/__pycache__/models.cpython-312.pyc and b/src/flask_prompt_master/models/__pycache__/models.cpython-312.pyc differ
diff --git a/src/flask_prompt_master/routes/__pycache__/__init__.cpython-312.pyc b/src/flask_prompt_master/routes/__pycache__/__init__.cpython-312.pyc
index 9378eda..b9286c9 100644
Binary files a/src/flask_prompt_master/routes/__pycache__/__init__.cpython-312.pyc and b/src/flask_prompt_master/routes/__pycache__/__init__.cpython-312.pyc differ
diff --git a/src/flask_prompt_master/routes/__pycache__/auth.cpython-312.pyc b/src/flask_prompt_master/routes/__pycache__/auth.cpython-312.pyc
index 7919f1e..00a2bec 100644
Binary files a/src/flask_prompt_master/routes/__pycache__/auth.cpython-312.pyc and b/src/flask_prompt_master/routes/__pycache__/auth.cpython-312.pyc differ
diff --git a/src/flask_prompt_master/routes/__pycache__/favorites.cpython-312.pyc b/src/flask_prompt_master/routes/__pycache__/favorites.cpython-312.pyc
index d9928e6..285bc9b 100644
Binary files a/src/flask_prompt_master/routes/__pycache__/favorites.cpython-312.pyc and b/src/flask_prompt_master/routes/__pycache__/favorites.cpython-312.pyc differ
diff --git a/src/flask_prompt_master/routes/__pycache__/routes.cpython-312.pyc b/src/flask_prompt_master/routes/__pycache__/routes.cpython-312.pyc
index 6e305d1..9084971 100644
Binary files a/src/flask_prompt_master/routes/__pycache__/routes.cpython-312.pyc and b/src/flask_prompt_master/routes/__pycache__/routes.cpython-312.pyc differ
diff --git a/src/flask_prompt_master/services/__pycache__/__init__.cpython-312.pyc b/src/flask_prompt_master/services/__pycache__/__init__.cpython-312.pyc
index 82b1b12..c403d90 100644
Binary files a/src/flask_prompt_master/services/__pycache__/__init__.cpython-312.pyc and b/src/flask_prompt_master/services/__pycache__/__init__.cpython-312.pyc differ
diff --git a/src/flask_prompt_master/services/__pycache__/auth_service.cpython-312.pyc b/src/flask_prompt_master/services/__pycache__/auth_service.cpython-312.pyc
index 2e797b6..b04567a 100644
Binary files a/src/flask_prompt_master/services/__pycache__/auth_service.cpython-312.pyc and b/src/flask_prompt_master/services/__pycache__/auth_service.cpython-312.pyc differ
diff --git a/src/flask_prompt_master/services/__pycache__/favorite_service.cpython-312.pyc b/src/flask_prompt_master/services/__pycache__/favorite_service.cpython-312.pyc
index fbc8a10..bac5462 100644
Binary files a/src/flask_prompt_master/services/__pycache__/favorite_service.cpython-312.pyc and b/src/flask_prompt_master/services/__pycache__/favorite_service.cpython-312.pyc differ