From cb0702e9f5986d3003d839d799d9480b96c0e835 Mon Sep 17 00:00:00 2001 From: rjb <263303411@qq.com> Date: Fri, 29 Aug 2025 01:27:58 +0800 Subject: [PATCH] =?UTF-8?q?=E7=99=BB=E5=BD=95=E6=B3=A8=E5=86=8C=E6=94=B6?= =?UTF-8?q?=E8=97=8F=E5=8A=9F=E8=83=BD=E4=B8=8A=E7=BA=BF=E4=BA=91=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- __pycache__/gunicorn.conf.cpython-312.pyc | Bin 0 -> 2889 bytes __pycache__/run_dev.cpython-312.pyc | Bin 0 -> 360 bytes config/__pycache__/__init__.cpython-312.pyc | Bin 974 -> 978 bytes config/__pycache__/base.cpython-312.pyc | Bin 3935 -> 3939 bytes .../__pycache__/development.cpython-312.pyc | Bin 2000 -> 2004 bytes config/__pycache__/local.cpython-312.pyc | Bin 1276 -> 1280 bytes config/__pycache__/production.cpython-312.pyc | Bin 2671 -> 2675 bytes config/__pycache__/testing.cpython-312.pyc | Bin 1990 -> 1994 bytes docs/product/启动服务器 | 12 + logs/app.log | 225 +++ logs/gunicorn_access.log | 96 ++ logs/gunicorn_error.log | 1468 +++++++++++++++++ migrations/README | 1 + migrations/__pycache__/env.cpython-312.pyc | Bin 0 -> 4485 bytes migrations/alembic.ini | 50 + migrations/env.py | 113 ++ migrations/script.py.mako | 24 + ...b6c8ec_add_favorites_table.cpython-312.pyc | Bin 0 -> 55957 bytes .../e1ec7bb6c8ec_add_favorites_table.py | 568 +++++++ run_dev.py | 2 +- run_dev_fixed.py | 2 +- run_production_public.py | 6 +- run_production_simple.py | 2 +- .../__pycache__/__init__.cpython-312.pyc | Bin 2347 -> 2351 bytes .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 1268 bytes .../__pycache__/config.cpython-312.pyc | Bin 1242 -> 1246 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 305 -> 309 bytes .../forms/__pycache__/forms.cpython-312.pyc | Bin 1178 -> 1182 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 357 -> 361 bytes .../__pycache__/favorites.cpython-312.pyc | Bin 3181 -> 3185 bytes .../models/__pycache__/models.cpython-312.pyc | Bin 7662 -> 7666 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 297 -> 301 bytes .../routes/__pycache__/auth.cpython-312.pyc | Bin 7274 -> 7278 bytes .../__pycache__/favorites.cpython-312.pyc | Bin 5127 -> 5131 bytes .../routes/__pycache__/routes.cpython-312.pyc | Bin 46351 -> 46355 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 247 -> 251 bytes .../__pycache__/auth_service.cpython-312.pyc | Bin 10629 -> 10633 bytes .../favorite_service.cpython-312.pyc | Bin 8797 -> 8801 bytes 38 files changed, 2563 insertions(+), 6 deletions(-) create mode 100644 __pycache__/gunicorn.conf.cpython-312.pyc create mode 100644 __pycache__/run_dev.cpython-312.pyc create mode 100644 logs/app.log create mode 100644 logs/gunicorn_access.log create mode 100644 logs/gunicorn_error.log create mode 100644 migrations/README create mode 100644 migrations/__pycache__/env.cpython-312.pyc create mode 100644 migrations/alembic.ini create mode 100644 migrations/env.py create mode 100644 migrations/script.py.mako create mode 100644 migrations/versions/__pycache__/e1ec7bb6c8ec_add_favorites_table.cpython-312.pyc create mode 100644 migrations/versions/e1ec7bb6c8ec_add_favorites_table.py create mode 100644 src/flask_prompt_master/__pycache__/__init__.cpython-36.pyc diff --git a/__pycache__/gunicorn.conf.cpython-312.pyc b/__pycache__/gunicorn.conf.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9c23f714f5ac59ab1feaef01c011f5640e9fa185 GIT binary patch literal 2889 zcmd5;U2NM_6t)w$Nt~o@nkN0*Sk|quK9E#nlhCxm3S*#xIwTNCezDwKw{z#%;o9z4 z#6!jg9osrpXxan}Ats@C|*_;Wl5Q)(quB{YmGyZ*PD9?h^G-i3K2>aY9Qgt6q3Vl=%ceu0z#Fjnrsm zA5luDWy44UGuK`(kulaW6%bC*M)cf3@2;bLMxu9@>Y(MI3E0!S3-=j4ATb=?u*(~v zJdjDQ>`+eahMj@@gEtc@v> zHms*4#Wd3EZcnClZ6ujJL4vv_8m5FzMH|K72&NxKISPm|R_0_-i+~dKEWddRK7>z%?B=0Z9U27nW6BLYNw}hw8LYhyc`? zzyZSv>FYrJvyejg>FN#7Y^6k00!@?Np8slj;mYcFpB1Oi!Le5^U9U5;bAw8v*GQ~h zopm*bX1q8E3QnAf7c!Ox`?!veRfFwX%)2a6(M(J~_$-VvB{l>yH5Z@ny4AJB?RR}q zEoh+0{2O1ef5R7BV2=?vd96R}k0u{wJyoa`Qcu{EU)ysZx>sZf$3SDogTpZ44giCm zKap^K;Ll=Nq#Iy*efGoH%mcgU4$lwX8eHO@|DSkZ>cS%rY?cf5{OwxvG4)cN-GQub zn6BXokR619yC^*NY~K#M)&|f%^SOQPoPGY1U27y1+d3^L%Xxrr@CU|9?&>MwKmE1y>sL9xm&pTdt0IbWmv zC!PpZoFEPB*u-?VS72aTZX9F#dWcUHk)9Ss;?WJ#oUv3>fxbrjEmV8L4J#TVfppdq z)4HXZ#8)XQr26T!Dj5c8t!xA>LzA7BXpm4wdKc>JJC-?=J)+0BvtCG7(_Is$e0| zly5BXTVaVW2;2EX`G!IymTv-iyo-Lj9k8v?y={@{So1Rt-D_S?(3AH);63c#2mT5i SpwvN@qC>vOmK}zZf`0&{Xe#ai literal 0 HcmV?d00001 diff --git a/__pycache__/run_dev.cpython-312.pyc b/__pycache__/run_dev.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b519f497fb18e5371e6e0df553a6ce763eb91d83 GIT binary patch literal 360 zcmYLCze~eF6n>XWnpg=6DpDs$vn1jyuH77@QiXcX9gg^t1 zCW~=f*Cul|1TdO;do87P8Sx{rrUXcN?y4}u s2%&dyr?vH~Xox@X>Ui*i8*jQfYF;+48+V)ctzq+3KbT?AcZ97ZKQNe}$j-G%qg~0}wo{Ta_WSk@p0noVI>Oer~FMQEFaRW@27azJ6k6NpZ4%a(-S~ MX1f07_lyr&0WEhFaR2}S delta 54 zcmcb@e}SL(G%qg~0}yDKuFi1Z$a{iOO5MdOrl7JUBR{VoD<(0sq&PVyIX^EgGd*VW IXU2!D0LLB@zW@LL diff --git a/config/__pycache__/local.cpython-312.pyc b/config/__pycache__/local.cpython-312.pyc index 7907ec25ad5aecac361004c2625e00d6b839e0c8..85117a603e90169bab084445b21cb5f71b9a6143 100644 GIT binary patch delta 58 zcmeyv*}%nnnwOW00SF$qZpdia$a{lHPE|i6KQ~psC^auDGchkIUq3Okq&QhWIX^Eg MGhKi4f2O~T06C%*^8f$< delta 54 zcmZqR`oqb4nwOW00SKb3S7&V7$a{lHO3}qCrl7JUBR{VoD<(0sq&PVyIX^EgGd*TA IGxJ|Y0Mi)~XaE2J diff --git a/config/__pycache__/production.cpython-312.pyc b/config/__pycache__/production.cpython-312.pyc index 9fdf2bbaecab4e4fec5393d779d20826d8fd16c4..c995498bbfdb5c409c97192ed8cdb64e7a856bb4 100644 GIT binary patch delta 58 zcmaDa@>zuUG%qg~0}wo{Ta{6^k#`H5oR)q@er~FMQEFaRW@27azJ6k6NpZ4%a(-S~ MX1f07+iX*q0ZKX)uK)l5 delta 54 zcmew?@?M1ZG%qg~0}yDKuFlxKk#`H5l$wiGOhIKyMt)vFR!m}MNpW&aa(-S~W_rx# I`)pH~0pr0F4FCWD diff --git a/config/__pycache__/testing.cpython-312.pyc b/config/__pycache__/testing.cpython-312.pyc index 44e463842160c4f4a476331da7e61e76c75302a9..2058bfad7c6069eacfe655d091ab03a3f0be2759 100644 GIT binary patch delta 59 zcmX@ce~O>)G%qg~0}wo{Ta|H-Z6lvQi=4WCMt*Lpeo<;(R%T*eQoep-W=V0fesX?Z NT4uWb=5iK)W&k_w6RrRN delta 55 zcmX@be~h2+G%qg~0}yDKuFjBS-^l0BBBktN6;n`Il98WRkQI}dSyG%FlboNImYE*2 JxthhF833<$5eNVP diff --git a/docs/product/启动服务器 b/docs/product/启动服务器 index 9f75ce2..483686d 100644 --- a/docs/product/启动服务器 +++ b/docs/product/启动服务器 @@ -127,3 +127,15 @@ python run_dev.py - 已安装包: Flask, SQLAlchemy, PyMySQL等 这样您就可以充分利用Python 3.12.7环境进行开发了! + + + + + + + + + + + + diff --git a/logs/app.log b/logs/app.log new file mode 100644 index 0000000..a3f857e --- /dev/null +++ b/logs/app.log @@ -0,0 +1,225 @@ +2025-08-24 17:18:37,910 INFO: 应用启动 [in /home/renjianbo/aitsc/config/base.py:82] +2025-08-24 17:32:22,073 INFO: 应用启动 [in /home/renjianbo/aitsc/config/base.py:82] +2025-08-24 17:33:47,090 INFO: 应用启动 [in /home/renjianbo/aitsc/config/base.py:82] +2025-08-24 17:40:48,391 INFO: 应用启动 [in /home/renjianbo/aitsc/config/base.py:82] +2025-08-24 21:49:33,296 INFO: 应用启动 [in /home/renjianbo/aitsc/config/base.py:82] +2025-08-24 22:02:34,974 INFO: 应用启动 [in /home/renjianbo/aitsc/config/base.py:82] +2025-08-24 22:03:41,060 INFO: 应用启动 [in /home/renjianbo/aitsc/config/base.py:82] +2025-08-24 22:05:02,904 INFO: 应用启动 [in /home/renjianbo/aitsc/config/base.py:82] +2025-08-24 23:28:27,649 INFO: 应用启动 [in /home/renjianbo/aitsc/config/base.py:82] +2025-08-24 23:31:11,387 INFO: 应用启动 [in /home/renjianbo/aitsc/config/base.py:82] +2025-08-24 23:38:39,083 INFO: 应用启动 [in /home/renjianbo/aitsc/config/base.py:82] +2025-08-28 12:41:02,160 ERROR: LLM API调用失败: [Errno 5] Input/output error [in /home/renjianbo/aitsc/src/flask_prompt_master/routes/routes.py:76] +2025-08-28 12:41:02,167 ERROR: Exception on / [POST] [in /home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py:875] +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: LLM API调用失败: [Errno 5] Input/output error [in /home/renjianbo/aitsc/src/flask_prompt_master/routes/routes.py:76] +2025-08-28 12:41:43,173 ERROR: Exception on / [POST] [in /home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py:875] +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: LLM API调用失败: [Errno 5] Input/output error [in /home/renjianbo/aitsc/src/flask_prompt_master/routes/routes.py:76] +2025-08-28 12:42:44,306 ERROR: Exception on / [POST] [in /home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py:875] +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-29 00:42:49,859 ERROR: Exception on / [GET] [in /home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py:875] +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:55:57,872 ERROR: Exception on / [GET] [in /home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py:875] +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? diff --git a/logs/gunicorn_access.log b/logs/gunicorn_access.log new file mode 100644 index 0000000..dbc05ee --- /dev/null +++ b/logs/gunicorn_access.log @@ -0,0 +1,96 @@ +127.0.0.1 - - [24/Aug/2025:22:05:14 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0" 614912 +127.0.0.1 - - [24/Aug/2025:22:05:16 +0800] "GET /favicon.ico HTTP/1.1" 404 207 "http://localhost:5002/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0" 5794 +127.0.0.1 - - [24/Aug/2025:22:05:37 +0800] "GET / HTTP/1.1" 200 818384 "-" "curl/7.29.0" 549536 +123.139.44.98 - - [24/Aug/2025:22:17:06 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0" 669092 +123.139.44.98 - - [24/Aug/2025:22:17:08 +0800] "GET /favicon.ico HTTP/1.1" 404 207 "http://101.43.95.130:5002/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0" 1481 +123.139.44.98 - - [24/Aug/2025:22:17:27 +0800] "GET /expert_generate HTTP/1.1" 200 12946 "http://101.43.95.130:5002/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0" 13677 +123.139.44.98 - - [24/Aug/2025:22:22:42 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0" 522042 +127.0.0.1 - - [24/Aug/2025:23:31:26 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0" 556566 +123.139.44.98 - - [24/Aug/2025:23:31:34 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0" 721878 +127.0.0.1 - - [24/Aug/2025:23:32:01 +0800] "GET / HTTP/1.1" 200 818384 "-" "curl/7.29.0" 685206 +123.139.44.98 - - [24/Aug/2025:23:37:46 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0" 751417 +123.139.44.98 - - [24/Aug/2025:23:37:51 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0" 477027 +123.139.44.98 - - [24/Aug/2025:23:38:10 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0" 341944 +123.139.44.98 - - [24/Aug/2025:23:38:40 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0" 761614 +123.139.44.98 - - [24/Aug/2025:23:59:09 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0" 495913 +123.139.44.98 - - [25/Aug/2025:07:14:18 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0" 664405 +3.132.23.201 - - [25/Aug/2025:11:56:59 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) Chrome/126.0.0.0 Safari/537.36" 1181018 +3.132.23.201 - - [25/Aug/2025:11:59:29 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) Chrome/126.0.0.0 Safari/537.36" 1223938 +36.40.130.48 - - [25/Aug/2025:16:55:17 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Linux; Android 15; BVL-AN16 Build/HONORBVL-AN16;) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/97.0.4692.98 Mobile Safari/537.36 T7/13.38 SP-engine/2.76.0 languageType/0 bdh_dvt/0 bdh_de/0 bdh_ds/0 bdapp/1.0 (bdhonorbrowser; bdhonorbrowser) bdhonorbrowser/9.3.0.3 (P1 15) NABar/1.0" 589710 +36.40.130.48 - - [25/Aug/2025:16:55:21 +0800] "GET /favicon.ico HTTP/1.1" 404 207 "http://101.43.95.130:5002/" "Mozilla/5.0 (Linux; Android 15; BVL-AN16 Build/HONORBVL-AN16;) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/97.0.4692.98 Mobile Safari/537.36 T7/13.38 SP-engine/2.76.0 languageType/0 bdh_dvt/0 bdh_de/0 bdh_ds/0 bdapp/1.0 (bdhonorbrowser; bdhonorbrowser) bdhonorbrowser/9.3.0.3 (P1 15) NABar/1.0" 1232 +119.28.64.175 - - [25/Aug/2025:16:55:27 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36" 461761 +119.28.64.175 - - [25/Aug/2025:17:59:10 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36" 685095 +119.28.64.175 - - [25/Aug/2025:17:59:13 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36" 348816 +67.205.162.22 - - [25/Aug/2025:19:11:09 +0800] "GET / HTTP/1.0" 200 818384 "-" "-" 555565 +206.168.34.124 - - [25/Aug/2025:20:07:11 +0800] "GET / HTTP/1.1" 200 818384 "-" "-" 689759 +206.168.34.124 - - [25/Aug/2025:20:07:20 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)" 2791994 +206.168.34.124 - - [25/Aug/2025:20:07:27 +0800] "GET /favicon.ico HTTP/1.1" 404 207 "-" "Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)" 1166 +206.168.34.124 - - [25/Aug/2025:20:07:38 +0800] "GET /favicon.ico HTTP/1.1" 404 207 "-" "Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)" 756 +206.168.34.124 - - [25/Aug/2025:20:08:04 +0800] "GET /login HTTP/1.1" 404 207 "-" "Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)" 702 +123.139.44.98 - - [25/Aug/2025:22:22:45 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0" 736080 +36.43.205.80 - - [26/Aug/2025:08:16:13 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Linux; Android 15; BVL-AN16 Build/HONORBVL-AN16;) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/97.0.4692.98 Mobile Safari/537.36 T7/13.38 SP-engine/2.76.0 languageType/0 bdh_dvt/0 bdh_de/0 bdh_ds/0 bdapp/1.0 (bdhonorbrowser; bdhonorbrowser) bdhonorbrowser/9.3.0.3 (P1 15) NABar/1.0" 1457591 +36.43.205.80 - - [26/Aug/2025:08:16:15 +0800] "GET /favicon.ico HTTP/1.1" 404 207 "http://101.43.95.130:5002/" "Mozilla/5.0 (Linux; Android 15; BVL-AN16 Build/HONORBVL-AN16;) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/97.0.4692.98 Mobile Safari/537.36 T7/13.38 SP-engine/2.76.0 languageType/0 bdh_dvt/0 bdh_de/0 bdh_ds/0 bdapp/1.0 (bdhonorbrowser; bdhonorbrowser) bdhonorbrowser/9.3.0.3 (P1 15) NABar/1.0" 1212 +185.224.128.17 - - [26/Aug/2025:08:27:03 +0800] "CONNECT example.com:80 HTTP/1.1" 404 207 "-" "-" 1131 +36.43.204.203 - - [26/Aug/2025:09:24:50 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Linux; Android 15; BVL-AN16 Build/HONORBVL-AN16;) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/97.0.4692.98 Mobile Safari/537.36 T7/13.38 SP-engine/2.76.0 languageType/0 bdh_dvt/0 bdh_de/0 bdh_ds/0 bdapp/1.0 (bdhonorbrowser; bdhonorbrowser) bdhonorbrowser/9.3.0.3 (P1 15) NABar/1.0" 1529481 +36.43.204.203 - - [26/Aug/2025:09:25:37 +0800] "POST / HTTP/1.1" 500 0 "-" "-" 40870 +36.43.204.203 - - [26/Aug/2025:09:26:05 +0800] "POST / HTTP/1.1" 500 0 "-" "-" 8263 +36.43.204.203 - - [26/Aug/2025:09:26:43 +0800] "POST / HTTP/1.1" 500 0 "-" "-" 8042 +36.43.204.203 - - [26/Aug/2025:09:27:50 +0800] "POST / HTTP/1.1" 500 0 "-" "-" 8161 +36.43.204.203 - - [26/Aug/2025:09:28:13 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Linux; Android 15; BVL-AN16 Build/HONORBVL-AN16;) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/97.0.4692.98 Mobile Safari/537.36 T7/13.38 SP-engine/2.76.0 languageType/0 bdh_dvt/0 bdh_de/0 bdh_ds/0 bdapp/1.0 (bdhonorbrowser; bdhonorbrowser) bdhonorbrowser/9.3.0.3 (P1 15) NABar/1.0" 456544 +36.43.204.203 - - [26/Aug/2025:09:28:17 +0800] "GET /favicon.ico HTTP/1.1" 404 207 "http://101.43.95.130:5002/" "Mozilla/5.0 (Linux; Android 15; BVL-AN16 Build/HONORBVL-AN16;) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/97.0.4692.98 Mobile Safari/537.36 T7/13.38 SP-engine/2.76.0 languageType/0 bdh_dvt/0 bdh_de/0 bdh_ds/0 bdapp/1.0 (bdhonorbrowser; bdhonorbrowser) bdhonorbrowser/9.3.0.3 (P1 15) NABar/1.0" 5100 +36.43.204.203 - - [26/Aug/2025:09:28:53 +0800] "POST / HTTP/1.1" 200 821717 "http://101.43.95.130:5002/" "Mozilla/5.0 (Linux; Android 15; BVL-AN16 Build/HONORBVL-AN16;) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/97.0.4692.98 Mobile Safari/537.36 T7/13.38 SP-engine/2.76.0 languageType/0 bdh_dvt/0 bdh_de/0 bdh_ds/0 bdapp/1.0 (bdhonorbrowser; bdhonorbrowser) bdhonorbrowser/9.3.0.3 (P1 15) NABar/1.0" 26695637 +3.134.148.59 - - [26/Aug/2025:11:44:26 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) Chrome/126.0.0.0 Safari/537.36" 1109637 +3.134.148.59 - - [26/Aug/2025:11:46:27 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) Chrome/126.0.0.0 Safari/537.36" 1108320 +199.45.154.121 - - [26/Aug/2025:16:03:27 +0800] "GET / HTTP/1.1" 200 818384 "-" "-" 1327629 +199.45.154.121 - - [26/Aug/2025:16:03:34 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)" 1947369 +199.45.154.121 - - [26/Aug/2025:16:03:36 +0800] "GET /favicon.ico HTTP/1.1" 404 207 "-" "Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)" 909 +199.45.154.121 - - [26/Aug/2025:16:03:42 +0800] "GET /favicon.ico HTTP/1.1" 404 207 "-" "Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)" 722 +199.45.154.121 - - [26/Aug/2025:16:04:04 +0800] "GET /login HTTP/1.1" 404 207 "-" "Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)" 743 +119.28.54.131 - - [26/Aug/2025:19:29:13 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36" 1269276 +119.28.54.131 - - [26/Aug/2025:20:40:08 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36" 484106 +91.196.152.108 - - [26/Aug/2025:21:19:46 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0" 1273310 +91.196.152.36 - - [26/Aug/2025:21:29:17 +0800] "GET /favicon.ico HTTP/1.1" 404 207 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0" 967 +185.224.128.17 - - [27/Aug/2025:07:12:44 +0800] "CONNECT example.com:80 HTTP/1.1" 404 207 "-" "-" 4622 +91.196.152.120 - - [27/Aug/2025:13:22:18 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0" 6953488 +91.196.152.100 - - [27/Aug/2025:13:32:59 +0800] "GET /favicon.ico HTTP/1.1" 404 207 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0" 4618 +167.94.138.191 - - [27/Aug/2025:15:58:02 +0800] "GET / HTTP/1.1" 200 818384 "-" "-" 970318 +167.94.138.191 - - [27/Aug/2025:15:58:08 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)" 1638509 +167.94.138.191 - - [27/Aug/2025:15:58:09 +0800] "GET /favicon.ico HTTP/1.1" 404 207 "-" "Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)" 4830 +167.94.138.191 - - [27/Aug/2025:15:58:16 +0800] "GET /favicon.ico HTTP/1.1" 404 207 "-" "Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)" 763 +167.94.138.191 - - [27/Aug/2025:15:58:36 +0800] "GET /.well-known/security.txt HTTP/1.1" 404 207 "-" "Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)" 680 +104.234.115.211 - - [27/Aug/2025:16:02:44 +0800] "GET / HTTP/1.1" 200 818384 "-" "'Mozilla/5.0 (compatible; GenomeCrawlerd/1.0; +https://www.nokia.com/genomecrawler)'" 2573375 +172.234.217.192 - - [27/Aug/2025:18:26:18 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 13_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" 1500178 +185.224.128.17 - - [28/Aug/2025:06:22:40 +0800] "CONNECT example.com:80 HTTP/1.1" 404 207 "-" "-" 4581 +47.99.100.132 - - [28/Aug/2025:07:39:41 +0800] "GET / HTTP/1.0" 200 51246 "-" "-" 272052 +47.99.100.132 - - [28/Aug/2025:07:39:45 +0800] "POST /sdk HTTP/1.1" 404 207 "-" "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)" 906 +47.99.100.132 - - [28/Aug/2025:07:39:45 +0800] "GET /nmaplowercheck1756337985 HTTP/1.1" 404 207 "-" "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)" 921 +47.99.100.132 - - [28/Aug/2025:07:39:45 +0800] "GET /evox/about HTTP/1.1" 404 207 "-" "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)" 708 +47.99.100.132 - - [28/Aug/2025:07:39:45 +0800] "GET /HNAP1 HTTP/1.1" 404 207 "-" "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)" 645 +47.99.100.132 - - [28/Aug/2025:07:39:45 +0800] "GET / HTTP/1.0" 200 51246 "-" "-" 456303 +47.99.100.132 - - [28/Aug/2025:07:40:00 +0800] "GET / HTTP/1.0" 200 51246 "-" "-" 119474 +47.99.100.132 - - [28/Aug/2025:07:40:00 +0800] "GET / HTTP/1.1" 200 51246 "-" "-" 119487 +117.33.113.14 - - [28/Aug/2025:12:39:53 +0800] "GET / HTTP/1.1" 200 51246 "-" "Mozilla/5.0 (Linux; Android 15; BVL-AN16 Build/HONORBVL-AN16;) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/97.0.4692.98 Mobile Safari/537.36 T7/13.38 SP-engine/2.76.0 languageType/0 bdh_dvt/0 bdh_de/0 bdh_ds/0 bdapp/1.0 (bdhonorbrowser; bdhonorbrowser) bdhonorbrowser/9.3.0.3 (P1 15) NABar/1.0" 1931760 +117.33.113.14 - - [28/Aug/2025:12:39:54 +0800] "GET /favicon.ico HTTP/1.1" 404 207 "http://101.43.95.130:5002/" "Mozilla/5.0 (Linux; Android 15; BVL-AN16 Build/HONORBVL-AN16;) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/97.0.4692.98 Mobile Safari/537.36 T7/13.38 SP-engine/2.76.0 languageType/0 bdh_dvt/0 bdh_de/0 bdh_ds/0 bdapp/1.0 (bdhonorbrowser; bdhonorbrowser) bdhonorbrowser/9.3.0.3 (P1 15) NABar/1.0" 897 +117.33.113.14 - - [28/Aug/2025:12:41:02 +0800] "POST / HTTP/1.1" 500 265 "http://101.43.95.130:5002/" "Mozilla/5.0 (Linux; Android 15; BVL-AN16 Build/HONORBVL-AN16;) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/97.0.4692.98 Mobile Safari/537.36 T7/13.38 SP-engine/2.76.0 languageType/0 bdh_dvt/0 bdh_de/0 bdh_ds/0 bdapp/1.0 (bdhonorbrowser; bdhonorbrowser) bdhonorbrowser/9.3.0.3 (P1 15) NABar/1.0" 332050 +117.33.113.14 - - [28/Aug/2025:12:41:12 +0800] "GET / HTTP/1.1" 200 51246 "-" "Mozilla/5.0 (Linux; Android 15; BVL-AN16 Build/HONORBVL-AN16;) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/97.0.4692.98 Mobile Safari/537.36 T7/13.38 SP-engine/2.76.0 languageType/0 bdh_dvt/0 bdh_de/0 bdh_ds/0 bdapp/1.0 (bdhonorbrowser; bdhonorbrowser) bdhonorbrowser/9.3.0.3 (P1 15) NABar/1.0" 375597 +117.33.113.14 - - [28/Aug/2025:12:41:32 +0800] "GET / HTTP/1.1" 200 51246 "-" "Mozilla/5.0 (Linux; Android 15; BVL-AN16 Build/HONORBVL-AN16;) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/97.0.4692.98 Mobile Safari/537.36 T7/13.38 SP-engine/2.76.0 languageType/0 bdh_dvt/0 bdh_de/0 bdh_ds/0 bdapp/1.0 (bdhonorbrowser; bdhonorbrowser) bdhonorbrowser/9.3.0.3 (P1 15) NABar/1.0" 203506 +117.33.113.14 - - [28/Aug/2025:12:41:32 +0800] "GET /favicon.ico HTTP/1.1" 404 207 "http://101.43.95.130:5002/" "Mozilla/5.0 (Linux; Android 15; BVL-AN16 Build/HONORBVL-AN16;) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/97.0.4692.98 Mobile Safari/537.36 T7/13.38 SP-engine/2.76.0 languageType/0 bdh_dvt/0 bdh_de/0 bdh_ds/0 bdapp/1.0 (bdhonorbrowser; bdhonorbrowser) bdhonorbrowser/9.3.0.3 (P1 15) NABar/1.0" 777 +117.33.113.14 - - [28/Aug/2025:12:41:43 +0800] "POST / HTTP/1.1" 500 265 "http://101.43.95.130:5002/" "Mozilla/5.0 (Linux; Android 15; BVL-AN16 Build/HONORBVL-AN16;) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/97.0.4692.98 Mobile Safari/537.36 T7/13.38 SP-engine/2.76.0 languageType/0 bdh_dvt/0 bdh_de/0 bdh_ds/0 bdapp/1.0 (bdhonorbrowser; bdhonorbrowser) bdhonorbrowser/9.3.0.3 (P1 15) NABar/1.0" 287447 +117.33.113.14 - - [28/Aug/2025:12:42:23 +0800] "GET / HTTP/1.1" 200 51246 "-" "Mozilla/5.0 (Linux; Android 15; BVL-AN16 Build/HONORBVL-AN16;) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/97.0.4692.98 Mobile Safari/537.36 T7/13.38 SP-engine/2.76.0 languageType/0 bdh_dvt/0 bdh_de/0 bdh_ds/0 bdapp/1.0 (bdhonorbrowser; bdhonorbrowser) bdhonorbrowser/9.3.0.3 (P1 15) NABar/1.0" 475153 +117.33.113.14 - - [28/Aug/2025:12:42:24 +0800] "GET /favicon.ico HTTP/1.1" 404 207 "http://101.43.95.130:5002/" "Mozilla/5.0 (Linux; Android 15; BVL-AN16 Build/HONORBVL-AN16;) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/97.0.4692.98 Mobile Safari/537.36 T7/13.38 SP-engine/2.76.0 languageType/0 bdh_dvt/0 bdh_de/0 bdh_ds/0 bdapp/1.0 (bdhonorbrowser; bdhonorbrowser) bdhonorbrowser/9.3.0.3 (P1 15) NABar/1.0" 840 +117.33.113.14 - - [28/Aug/2025:12:42:44 +0800] "POST / HTTP/1.1" 500 265 "http://101.43.95.130:5002/" "Mozilla/5.0 (Linux; Android 15; BVL-AN16 Build/HONORBVL-AN16;) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/97.0.4692.98 Mobile Safari/537.36 T7/13.38 SP-engine/2.76.0 languageType/0 bdh_dvt/0 bdh_de/0 bdh_ds/0 bdapp/1.0 (bdhonorbrowser; bdhonorbrowser) bdhonorbrowser/9.3.0.3 (P1 15) NABar/1.0" 144505 +3.134.148.59 - - [28/Aug/2025:13:29:56 +0800] "GET / HTTP/1.1" 200 51246 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) Chrome/126.0.0.0 Safari/537.36" 418920 +3.134.148.59 - - [28/Aug/2025:13:32:27 +0800] "GET / HTTP/1.1" 200 51246 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) Chrome/126.0.0.0 Safari/537.36" 475636 +162.142.125.197 - - [28/Aug/2025:16:58:38 +0800] "GET / HTTP/1.1" 200 51246 "-" "Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)" 435845 +162.142.125.197 - - [28/Aug/2025:16:58:43 +0800] "GET /favicon.ico HTTP/1.1" 404 207 "-" "Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)" 698 +162.142.125.197 - - [28/Aug/2025:16:58:54 +0800] "GET /favicon.ico HTTP/1.1" 404 207 "-" "Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)" 706 +162.142.125.197 - - [28/Aug/2025:16:59:00 +0800] "GET / HTTP/1.1" 200 51246 "-" "Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)" 427379 +121.40.47.206 - - [28/Aug/2025:18:10:22 +0800] "GET / HTTP/1.1" 200 51246 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" 262173 +47.122.84.251 - - [28/Aug/2025:18:45:19 +0800] "GET / HTTP/1.0" 200 51246 "-" "-" 241684 +47.122.84.251 - - [28/Aug/2025:18:45:19 +0800] "OPTIONS / HTTP/1.0" 200 0 "-" "-" 645 +47.122.84.251 - - [28/Aug/2025:18:46:00 +0800] "GET /devicedesc.xml HTTP/1.1" 404 207 "-" "-" 682 +123.139.40.144 - - [29/Aug/2025:00:39:08 +0800] "GET / HTTP/1.1" 200 51246 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0" 295881 +123.139.40.144 - - [29/Aug/2025:00:39:21 +0800] "GET / HTTP/1.1" 200 51246 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0" 441695 +123.139.40.144 - - [29/Aug/2025:00:42:49 +0800] "GET / HTTP/1.1" 500 265 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0" 508571 +123.139.40.144 - - [29/Aug/2025:00:44:27 +0800] "GET / HTTP/1.1" 200 51246 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0" 279239 +123.139.40.144 - - [29/Aug/2025:00:55:57 +0800] "GET / HTTP/1.1" 500 265 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0" 458593 diff --git a/logs/gunicorn_error.log b/logs/gunicorn_error.log new file mode 100644 index 0000000..e454a75 --- /dev/null +++ b/logs/gunicorn_error.log @@ -0,0 +1,1468 @@ +[2025-08-24 22:02:35 +0800] [17895] [INFO] Starting gunicorn 23.0.0 +[2025-08-24 22:02:35 +0800] [17895] [INFO] Gunicorn服务器启动中... +[2025-08-24 22:02:35 +0800] [17895] [INFO] Listening at: http://0.0.0.0:5000 (17895) +[2025-08-24 22:02:35 +0800] [17895] [INFO] Using worker: sync +[2025-08-24 22:02:35 +0800] [17895] [INFO] 工作进程 [booting] 即将启动 +[2025-08-24 22:02:35 +0800] [17934] [INFO] Booting worker with pid: 17934 +[2025-08-24 22:02:35 +0800] [17934] [INFO] 工作进程 17934 已启动 +[2025-08-24 22:02:35 +0800] [17934] [INFO] 工作进程 17934 初始化完成 +[2025-08-24 22:02:35 +0800] [17895] [INFO] 工作进程 [booting] 即将启动 +[2025-08-24 22:02:35 +0800] [17895] [INFO] 工作进程 [booting] 即将启动 +[2025-08-24 22:02:35 +0800] [17935] [INFO] Booting worker with pid: 17935 +[2025-08-24 22:02:35 +0800] [17935] [INFO] 工作进程 17935 已启动 +[2025-08-24 22:02:35 +0800] [17935] [INFO] 工作进程 17935 初始化完成 +[2025-08-24 22:02:35 +0800] [17936] [INFO] Booting worker with pid: 17936 +[2025-08-24 22:02:35 +0800] [17936] [INFO] 工作进程 17936 已启动 +[2025-08-24 22:02:35 +0800] [17936] [INFO] 工作进程 17936 初始化完成 +[2025-08-24 22:02:36 +0800] [17895] [INFO] 工作进程 [booting] 即将启动 +[2025-08-24 22:02:36 +0800] [17937] [INFO] Booting worker with pid: 17937 +[2025-08-24 22:02:36 +0800] [17937] [INFO] 工作进程 17937 已启动 +[2025-08-24 22:02:36 +0800] [17937] [INFO] 工作进程 17937 初始化完成 +[2025-08-24 22:02:36 +0800] [17895] [INFO] 工作进程 [booting] 即将启动 +[2025-08-24 22:02:36 +0800] [17938] [INFO] Booting worker with pid: 17938 +[2025-08-24 22:02:36 +0800] [17938] [INFO] 工作进程 17938 已启动 +[2025-08-24 22:02:36 +0800] [17938] [INFO] 工作进程 17938 初始化完成 +[2025-08-24 22:03:41 +0800] [18797] [INFO] Starting gunicorn 23.0.0 +[2025-08-24 22:04:36 +0800] [17895] [INFO] Handling signal: term +[2025-08-24 22:04:36 +0800] [17934] [INFO] Worker exiting (pid: 17934) +[2025-08-24 22:04:36 +0800] [17937] [INFO] Worker exiting (pid: 17937) +[2025-08-24 22:04:36 +0800] [17936] [INFO] Worker exiting (pid: 17936) +[2025-08-24 22:04:36 +0800] [17935] [INFO] Worker exiting (pid: 17935) +[2025-08-24 22:04:36 +0800] [17938] [INFO] Worker exiting (pid: 17938) +[2025-08-24 22:04:37 +0800] [17895] [INFO] Shutting down: Master +[2025-08-24 22:05:03 +0800] [20867] [INFO] Starting gunicorn 23.0.0 +[2025-08-24 22:05:03 +0800] [20867] [INFO] Gunicorn服务器启动中... +[2025-08-24 22:05:03 +0800] [20867] [INFO] Listening at: http://0.0.0.0:5002 (20867) +[2025-08-24 22:05:03 +0800] [20867] [INFO] Using worker: sync +[2025-08-24 22:05:03 +0800] [20867] [INFO] 工作进程 [booting] 即将启动 +[2025-08-24 22:05:03 +0800] [22376] [INFO] Booting worker with pid: 22376 +[2025-08-24 22:05:03 +0800] [22376] [INFO] 工作进程 22376 已启动 +[2025-08-24 22:05:03 +0800] [22376] [INFO] 工作进程 22376 初始化完成 +[2025-08-24 22:05:03 +0800] [20867] [INFO] 工作进程 [booting] 即将启动 +[2025-08-24 22:05:03 +0800] [22401] [INFO] Booting worker with pid: 22401 +[2025-08-24 22:05:03 +0800] [22401] [INFO] 工作进程 22401 已启动 +[2025-08-24 22:05:03 +0800] [22401] [INFO] 工作进程 22401 初始化完成 +[2025-08-24 22:05:03 +0800] [20867] [INFO] 工作进程 [booting] 即将启动 +[2025-08-24 22:05:03 +0800] [22538] [INFO] Booting worker with pid: 22538 +[2025-08-24 22:05:03 +0800] [22538] [INFO] 工作进程 22538 已启动 +[2025-08-24 22:05:03 +0800] [22538] [INFO] 工作进程 22538 初始化完成 +[2025-08-24 22:05:03 +0800] [20867] [INFO] 工作进程 [booting] 即将启动 +[2025-08-24 22:05:03 +0800] [22588] [INFO] Booting worker with pid: 22588 +[2025-08-24 22:05:03 +0800] [22588] [INFO] 工作进程 22588 已启动 +[2025-08-24 22:05:03 +0800] [22588] [INFO] 工作进程 22588 初始化完成 +[2025-08-24 22:05:04 +0800] [20867] [INFO] 工作进程 [booting] 即将启动 +[2025-08-24 22:05:04 +0800] [22647] [INFO] Booting worker with pid: 22647 +[2025-08-24 22:05:04 +0800] [22647] [INFO] 工作进程 22647 已启动 +[2025-08-24 22:05:04 +0800] [22647] [INFO] 工作进程 22647 初始化完成 +[2025-08-24 22:17:58 +0800] [20867] [CRITICAL] WORKER TIMEOUT (pid:22538) +[2025-08-24 22:17:58 +0800] [22538] [INFO] 工作进程 22538 异常退出 +[2025-08-24 22:17:58 +0800] [22538] [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 22:17:58 +0800] [22538] [INFO] Worker exiting (pid: 22538) +[2025-08-24 22:17:59 +0800] [20867] [INFO] 工作进程 [booting] 即将启动 +[2025-08-24 22:17:59 +0800] [30966] [INFO] Booting worker with pid: 30966 +[2025-08-24 22:17:59 +0800] [30966] [INFO] 工作进程 30966 已启动 +[2025-08-24 22:17:59 +0800] [30966] [INFO] 工作进程 30966 初始化完成 +[2025-08-24 22:23:13 +0800] [20867] [CRITICAL] WORKER TIMEOUT (pid:22376) +[2025-08-24 22:23:13 +0800] [22376] [INFO] 工作进程 22376 异常退出 +[2025-08-24 22:23:13 +0800] [22376] [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 22:23:13 +0800] [22376] [INFO] Worker exiting (pid: 22376) +[2025-08-24 22:23:13 +0800] [20867] [INFO] 工作进程 [booting] 即将启动 +[2025-08-24 22:23:13 +0800] [24024] [INFO] Booting worker with pid: 24024 +[2025-08-24 22:23:13 +0800] [24024] [INFO] 工作进程 24024 已启动 +[2025-08-24 22:23:13 +0800] [24024] [INFO] 工作进程 24024 初始化完成 +[2025-08-24 22:31:50 +0800] [20867] [INFO] Handling signal: term +[2025-08-24 22:31:50 +0800] [22401] [INFO] Worker exiting (pid: 22401) +[2025-08-24 22:31:50 +0800] [22647] [INFO] Worker exiting (pid: 22647) +[2025-08-24 22:31:50 +0800] [30966] [INFO] Worker exiting (pid: 30966) +[2025-08-24 22:31:50 +0800] [22588] [INFO] Worker exiting (pid: 22588) +[2025-08-24 22:31:50 +0800] [24024] [INFO] Worker exiting (pid: 24024) +[2025-08-24 22:31:51 +0800] [20867] [INFO] Shutting down: Master +[2025-08-24 23:31:11 +0800] [27829] [INFO] Starting gunicorn 23.0.0 +[2025-08-24 23:31:11 +0800] [27829] [INFO] Gunicorn服务器启动中... +[2025-08-24 23:31:11 +0800] [27829] [INFO] Listening at: http://0.0.0.0:5002 (27829) +[2025-08-24 23:31:11 +0800] [27829] [INFO] Using worker: sync +[2025-08-24 23:31:11 +0800] [27829] [INFO] 工作进程 [booting] 即将启动 +[2025-08-24 23:31:11 +0800] [27837] [INFO] Booting worker with pid: 27837 +[2025-08-24 23:31:11 +0800] [27837] [INFO] 工作进程 27837 已启动 +[2025-08-24 23:31:11 +0800] [27829] [INFO] 工作进程 [booting] 即将启动 +[2025-08-24 23:31:11 +0800] [27837] [INFO] 工作进程 27837 初始化完成 +[2025-08-24 23:31:11 +0800] [27838] [INFO] Booting worker with pid: 27838 +[2025-08-24 23:31:11 +0800] [27838] [INFO] 工作进程 27838 已启动 +[2025-08-24 23:31:12 +0800] [27838] [INFO] 工作进程 27838 初始化完成 +[2025-08-24 23:31:12 +0800] [27829] [INFO] 工作进程 [booting] 即将启动 +[2025-08-24 23:31:12 +0800] [27839] [INFO] Booting worker with pid: 27839 +[2025-08-24 23:31:12 +0800] [27839] [INFO] 工作进程 27839 已启动 +[2025-08-24 23:31:12 +0800] [27839] [INFO] 工作进程 27839 初始化完成 +[2025-08-24 23:31:12 +0800] [27829] [INFO] 工作进程 [booting] 即将启动 +[2025-08-24 23:31:12 +0800] [27840] [INFO] Booting worker with pid: 27840 +[2025-08-24 23:31:12 +0800] [27840] [INFO] 工作进程 27840 已启动 +[2025-08-24 23:31:12 +0800] [27840] [INFO] 工作进程 27840 初始化完成 +[2025-08-24 23:31:12 +0800] [27829] [INFO] 工作进程 [booting] 即将启动 +[2025-08-24 23:31:12 +0800] [27841] [INFO] Booting worker with pid: 27841 +[2025-08-24 23:31:12 +0800] [27841] [INFO] 工作进程 27841 已启动 +[2025-08-24 23:31:12 +0800] [27841] [INFO] 工作进程 27841 初始化完成 +[2025-08-24 23:31:56 +0800] [27829] [CRITICAL] WORKER TIMEOUT (pid:27838) +[2025-08-24 23:31:56 +0800] [27838] [INFO] 工作进程 27838 异常退出 +[2025-08-24 23:31:56 +0800] [27838] [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:31:56 +0800] [27838] [INFO] Worker exiting (pid: 27838) +[2025-08-24 23:31:56 +0800] [27829] [INFO] 工作进程 [booting] 即将启动 +[2025-08-24 23:31:56 +0800] [28340] [INFO] Booting worker with pid: 28340 +[2025-08-24 23:31:56 +0800] [28340] [INFO] 工作进程 28340 已启动 +[2025-08-24 23:31:56 +0800] [28340] [INFO] 工作进程 28340 初始化完成 +[2025-08-24 23:32:04 +0800] [27829] [CRITICAL] WORKER TIMEOUT (pid:27840) +[2025-08-24 23:32:04 +0800] [27840] [INFO] 工作进程 27840 异常退出 +[2025-08-24 23:32:04 +0800] [27840] [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:32:04 +0800] [27840] [INFO] Worker exiting (pid: 27840) +[2025-08-24 23:32:04 +0800] [27829] [INFO] 工作进程 [booting] 即将启动 +[2025-08-24 23:32:04 +0800] [28447] [INFO] Booting worker with pid: 28447 +[2025-08-24 23:32:04 +0800] [28447] [INFO] 工作进程 28447 已启动 +[2025-08-24 23:32:04 +0800] [28447] [INFO] 工作进程 28447 初始化完成 +[2025-08-24 23:37:45 +0800] [27837] [INFO] Parent changed, shutting down: +[2025-08-24 23:37:45 +0800] [27837] [INFO] Worker exiting (pid: 27837) +[2025-08-24 23:37:46 +0800] [28340] [INFO] Parent changed, shutting down: +[2025-08-24 23:37:46 +0800] [28340] [INFO] Worker exiting (pid: 28340) +[2025-08-24 23:37:46 +0800] [28447] [INFO] Parent changed, shutting down: +[2025-08-24 23:37:46 +0800] [28447] [INFO] Worker exiting (pid: 28447) +[2025-08-24 23:37:49 +0800] [27839] [INFO] Parent changed, shutting down: +[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 0000000000000000000000000000000000000000..04473737e5d0188c7172eff60dea036d03239024 GIT binary patch literal 4485 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 Lt=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 0000000000000000000000000000000000000000..f57d46d38a1d83f6a3e402e34675f37eff645014 GIT binary patch literal 55957 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 literal 0 HcmV?d00001 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 a5f8e726f6fbce6f7524214a3b1dbdc859b533f8..bf8f8f05bf657da76c4805eab5ca7cb9e790c074 100644 GIT binary patch delta 75 zcmZ22v|fn!G%qg~0}woJ-H?&Ik#`%LzNLOfer~FMQEFaRW@27azJ6k6NpZ4%aZ$2< dT25kdc6>omer`cYd~RZKNotY)=67tiOaR6b8u|bL delta 71 zcmZ24v|5PwG%qg~0}xy@T%R#-BkwjgZBrMkn1afZjQqTUteC{ilH%l;;-ci3w4B7^ Z?D&GB{M>?)_}s+elGLJ@&7at8nE+_$8X5oq 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 0000000000000000000000000000000000000000..fc66c3accb880c7a391372697176e85861ae3b05 GIT binary patch literal 1268 zcmZuwPj4GV6rb7k{_)yQ+!Ry}74p?c#0O4P2;rtliAY^FrU>RTTJMaVb@v~$<4Ua@ zgm6&>C>LqOcPibVmLq{CKxMO3$#!tdM@ihDKv8snipERE3wNRQFb7-J<#bBuG1#SCT+@I+(Q zo(8!6{6twv(w+dSNCi$<*##M_s$(tphKIEwP?pQX`p{w(R-I_yq3=)YYKuFT*z$jL z^@Z*XTRE+Rw4EJY15!={#`MYk`ThOruRl-keKNg!G<$HE!+#z94)E-o!}+&&PCnh6 zA3dJ`@^t?6hvU1Crl0SheEiw$i-+@j2h*P>g*G=LWy!-NfPAO7%d4xcRJzjlni^UD z7pMI=U|f(|p;~M^q^gQTuWoN%-t2TU{7MrOD;EC1k5ZwEqDmRMenfl8=p5`9QGay+ z!8BfN6p>tLkn+Y>yZa7Z@4QDUjNjxzoP<1*qb0C8KAapMJeckOIQ{KQIBHy4zj*!f z#;5`+U_IM=Jbm&t;OA5WZLPh%e&qvtsr_#IV!OLeuWxVOwmPwFq+B-72n}p9o6^V) zIi!~TK^MDi_)A0T}^Ifjwd+OS5aC4 zS7`$lWR$RmZQaJER@EK-CEdYQy^00*V;^MO*a#M#1T>b$)o^8_r literal 0 HcmV?d00001 diff --git a/src/flask_prompt_master/__pycache__/config.cpython-312.pyc b/src/flask_prompt_master/__pycache__/config.cpython-312.pyc index 7463bc926325bb9a5001f8cba41715ed63bfba8f..581133f33793d1a697e749d10a701b904a3d8f1d 100644 GIT binary patch delta 75 zcmcb`d5@F#G%qg~0}wo{Ta{6}k++Rm-&{WxF}ga dEhn)!JHDVOKewPHJ~y$rB(+F?^FC%7MgYSx1c0GH?g=RwJ0VnzbLmjX5vp90F)*hfB*mh 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 44ac0a14e3a5f91e090b1a011e85318f30023b69..c99ee1c77da5da2f1f8e6dd9e0970a42521d1f6a 100644 GIT binary patch delta 81 zcmbQmIggX~G%qg~0}wo{Ta_WPk@pXysf~U{er~FMQEFaRW@27azJ6k6NpZ4%aZ$2< jT25kdc6>omer`cYd~RZKNotXPT7FS(vHoT&rUWJcSsxsC delta 77 zcmbQoIg69`G%qg~0}yDKuFg>2$oq%U(89$krl7JUBR{VoD<(0sq&PXIxF|U$Ehn)! fJHDVOKewPHJ~y$rB(*3eEx#zYIA*gQQvwqJ#hn`U 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 efedd2922d9b8ba605144a036d4d6918181a1c3a..531e32d73e3a51089a9524729b2863578152cce1 100644 GIT binary patch delta 80 zcmaFL^pc79G%qg~0}woJ-H@?-BJXoE2mOrv+*JLd)V!?B#Jr?@{lv_Y;$;2eqGbKF ioW$bn_=2MR+=7z$+{EIN)FS=d{FKz3V*SZ#jP?MRk{xjX delta 76 zcmaFK^puJBG%qg~0}uo&tk2jmk@vZgjf+)GL1jrseqKRVOk!q9adJ#?QF2ULPGWI( ed_hruZb3omer`cYd~RZKNotXPZhlH?PO<*xjU0QJ0m8r@ng9R* delta 78 zcmew;@m7NOG%qg~0}uo&tk1Zzk++D$$kxRwrl7JUBR{VoD<(0sq&PXIxF|U$Ehn)! gJHDVOKewPHJ~y$rB(*3eH$Npcr#NQwR*pT)05e1#J^%m! 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 40f6fa8b27557eec96db2e390d01e808958ccb9a..b7b3367773613108a7965764c45be3cd2a1214ca 100644 GIT binary patch delta 83 zcmaE7{mGi|G%qg~0}woJ-H@??ZzG=;o0*+{Mt*Lpeo<;(R%T*eQoep-W=V0fesNK< lep*gqadvz`QGRYgNqlZ%aY<^Cer|qBYEH5K<}9`raRAUt9y$O3 delta 79 zcmexl{mz>2G%qg~0}xy@T%WaBqKksAS)&@v!pmVrno3MCM_qi hI6JxFoeGCO1DNHK#aca~@lZH~=#Q9H0OI 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 9378edaa059fe224e656c1e77376ea5b86d2dadd..b9286c9a9c4e4aa7a9095a4d83f7e02d40348531 100644 GIT binary patch delta 79 zcmZ3w33PUG%qg~0}yDKuFfc*$h*$S#>Fb8pt2+*Kd&GwCNZ<5I60=cC^;rAC$Ts? dzMv>Sx1c0GH?g=RwJ4@2zqBN^IA-EU8vv*B8`A&) 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 7919f1e78d9ba838ef4127c8001f73d7581da5b4..00a2beccc64faeeca57da09d04842c8a1c2b1b2c 100644 GIT binary patch delta 83 zcmaE5@y>$pG%qg~0}woJ-H=fww2?2E#mq)OBR@A)zbG{?D>E@KDPKP^v!pm#zqlw_ lKP@M*I6JxFoemzbL=7B(+$7^JJFm;sDBH9=8Ah delta 79 zcmaE7@ydelG%qg~0}xy@T%W-&ypb=M#mK_NDyE>aBqKksAS)&@v!pmVrno3MCM_qi hI6JxFoeGrYOI(B(*qZ^K_Q$;s8B`9bW(d 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 d9928e67778b7aecf5dfedb68a27702fc0adae28..285bc9ba89380f3e1d15d065acf56fc8e440a1f5 100644 GIT binary patch delta 82 zcmZqI=+@vp&CAQh00fU)H)JSoob}+@}6NbvURbFDX1*T$j>Xtib>2YDNc?lE=rC`%SkNG gjxQ+6&n+m4&rK{YNiB*g$}cTREsojD&-_OK0RA-`RR910 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 6e305d102129dbd1925ab33e9caedbc1d73befe2..908497144c846c347fdf2b2acbce87ac9cc436a3 100644 GIT binary patch delta 68 zcmeBw#WeX96ZdIeUM>b8c-*>SBX<#}w4HuNer~FMQEFaRW@27azJ6k6NpZ4%aZ$4V Xb8DA8HJk-Lb~$jZekrl7JUBR{VoD<(0sq&PXIxF|U$Ehn)! gJHDVOKewPHJ~y$rB(*4}D8IBMwK!(;X3m7w05RSjegFUf 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 82b1b12f710456f999cffdfc4f8c44fa15e1cbff..c403d90a4eae454713d00edb1bd89360ac776633 100644 GIT binary patch delta 66 zcmey)_?waUG%qg~0}wo{Ta~eIB5$pPQnaQce`V;qA0ssNy7uf&+ delta 77 zcmey(_??mWG%qg~0}yDKuFg0yk+;^w&c!OGpt2+*Kd&GwCNZ<5I60=cC^;rAC$Ts? fzMv>Sx1c0GH?g=RwJ4@IwWusJIkh-u;vq`_6`UO* 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 2e797b6b5a8f339e9eede345dc7aba2c977f1a0f..b04567acdfdd4f327400b635e55e8b8e875b39fd 100644 GIT binary patch delta 85 zcmZn-?hNKT&CAQh00fU)H)O0*-^drpWZ|Ztk)NBYUzD1cm6@2Al&_zdSyG&=UtE-| npO%wYoE=|Kl%HEr5}%t`T#{O(Uz}Q0mYJMdtiO3O(;4~F delta 81 zcmeASZVl!;&CAQh00h?z*Jte1*vJ>iWa8vv6;n`Il98WRkQI}dSyG%FQ(TlBla`ZM joE=|Kl%HEr5}%t`T#{N8Q=D2xF}ga lEhn)!JHDVOKewPHJ~y$rB(+GtIJKxOGdZomer`cYd~RZKNor9{acWUnW^!tA%;H2Q1pstG9g_e6