账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    【python新人求助】flask+pymssql 通过wsgi发布到Apache,访问接口服务器卡死?
    29
    0

    前端发起http请求 '/getData' ,项目就卡死

    index.py 代码如下:

    from flask import Flask,render_template,request
    import json
    import pymssql
    import urllib.parse
    import sys
    app = Flask(__name__)
    
    @app.route('/')
    def index():
        return render_template('index.html')
    @app.route('/hello')
    def hello():
        return 'hello world'
    @app.route('/getData',methods=['GET'])
    def getddlData(): 
        # return json.dumps([])
        sql='SELECT DISTINCT ChatRoomName FROM dbo.Issue'
        conn=pymssql.connect(host="localhost", user="sa", password="123456", database="IssueCollect") 
        cursor=conn.cursor(as_dict=True) 
        cursor.execute(sql)
        rooms=cursor.fetchall()
        cursor.close()
        conn.close()
        return json.dumps(rooms) 
    if __name__ == '__main__':
        app.run()

    test.wsgi:

    import sys
    #app's path
    sys.path.insert(0,"C:/Users/Stephen/Desktop/IssueCollect")
    from index import app
    #Initialize WSGI app object
    application = app

    Apache conf

    LoadFile "c:/program files (x86)/python37-32/python37.dll"
    LoadModule wsgi_module "c:/program files (x86)/python37-32/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win32.pyd"
    WSGIPythonHome "c:/program files (x86)/python37-32"
    
    <VirtualHost *:5001>
        WSGIScriptAlias / C:/Users/Stephen/Desktop/IssueCollect/test.wsgi
        <Directory C:/Users/Stephen/Desktop/IssueCollect>
            Require all granted
        </Directory>
    </VirtualHost>

    卡死后关闭httpd,查看Apache error log:

    on Jul 23 14:05:52.534352 2018] [mpm_winnt:notice] [pid 3856:tid 600] AH00455: Apache/2.4.34 (Win32) mod_wsgi/4.6.4 Python/3.7 configured -- resuming normal operations
    [Mon Jul 23 14:05:52.534853 2018] [mpm_winnt:notice] [pid 3856:tid 600] AH00456: Server built: Jul 10 2018 09:24:15
    [Mon Jul 23 14:05:52.534853 2018] [core:notice] [pid 3856:tid 600] AH00094: Command line: 'C:\\Apache24\\bin\\httpd.exe -d C:/Apache24'
    [Mon Jul 23 14:05:52.536599 2018] [mpm_winnt:notice] [pid 3856:tid 600] AH00418: Parent: Created child process 18044
    Apache server shutdown initiated...
    pm_winnt:notice] [pid 18044:tid 712] AH00354: Child: Starting 512 worker threads.
    [Mon Jul 23 14:06:58.522281 2018] [mpm_winnt:notice] [pid 3856:tid 600] AH00422: Parent: Received shutdown signal -- Shutting down the server.
    [Mon Jul 23 14:07:30.572310 2018] [mpm_winnt:notice] [pid 18044:tid 712] AH00362: Child: Waiting 30 more seconds for 2 worker threads to finish.
    [Mon Jul 23 14:08:00.692059 2018] [mpm_winnt:notice] [pid 18044:tid 712] AH00362: Child: Waiting 0 more seconds for 2 worker threads to finish.
    [Mon Jul 23 14:08:00.792357 2018] [mpm_winnt:notice] [pid 18044:tid 712] AH00363: Child: Terminating 2 threads that failed to exit.
    [Mon Jul 23 14:08:00.792357 2018] [mpm_winnt:notice] [pid 18044:tid 712] AH00364: Child: All worker threads have exited.

    在本地python中执行index.py访问正常,
    发布到Apache服务器上,不连接数据库直接返回空正常。
    连接数据库就有问题。
    是我Apache配置问题吗?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 芃玉燕 普通会员 1楼

      针对这种情况,可能有以下几个原因:

      1. 代码问题:首先,确保你的代码没有语法错误或者逻辑错误。例如,检查是否在正确的数据库连接、查询语句、异常处理等方面。

      2. WSGI配置:检查你的 WSGI 配置文件(通常在 templates 目录下),确保 Flask 应用正确配置 WSGI 服务器。可能需要调整 wsgi_params 参数,以指定 WSGI 服务器的配置。

      3. WSGI中间件:确保你的 WSGI 中间件(如 Flask-WTFFlask-JWT-Extended)正常工作。在 WSGI 服务器中设置中间件,或者在 wsgi_params 中指定中间件。

      4. 负载均衡:检查你的负载均衡设置,确保正确的服务器在处理请求。这可能需要调整服务器配置。

      5. SQL查询问题:如果 WSGI 服务器遇到 SQL 查询问题,可能需要检查 SQL 查询语句,并确保它们没有语法错误。

      6. 网络问题:如果访问接口服务器的网络连接不稳定,可能会导致请求无法到达。检查网络连接,确保服务器能够正常接收请求。

      7. 其他可能的问题:还有很多其他可能的原因,例如服务器配置错误、防火墙阻止、数据库问题等。你可能需要逐一排查,找到问题的根源。

      建议你先排查以上几个可能的问题,然后再尝试重启服务器,或者联系 Flask 的技术支持。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部