小编Sir*_*wer的帖子

如何在Apache和mod_wsgi中使用Flask路由?

我已经安装了Apache服务器,它正在通过mod_wsgi处理Flask响应.我通过别名注册了WSGI脚本:

[httpd.conf中]

WSGIScriptAlias /service "/mnt/www/wsgi-scripts/service.wsgi"
Run Code Online (Sandbox Code Playgroud)

我在上面的路径中添加了相应的WSGI文件:

[/mnt/www/wsgi-scripts/service.wsgi]

import sys
sys.path.insert(0, "/mnt/www/wsgi-scripts")

from service import application
Run Code Online (Sandbox Code Playgroud)

我有一个简单的测试Flask Python脚本,它提供了服务模块:

[/mnt/www/wsgi-scripts/service.py]

from flask import Flask

app = Flask(__name__)

@app.route('/')
def application(environ, start_response):
        status = '200 OK'
        output = "Hello World!"
        response_headers = [('Content-type', 'text/plain'),
                            ('Content-Length', str(len(output)))]
        start_response(status, response_headers)
        return [output]

@app.route('/upload')
def upload(environ, start_response):
        output = "Uploading"
        status = '200 OK'
        response_headers = [('Content-type', 'text/plain'),
                            ('Content-Length', str(len(output)))]
        start_response(status, response_headers)
        return [output]

if __name__ == '__main__':
        app.run()
Run Code Online (Sandbox Code Playgroud)

当我访问我的网站URL [hostname]/service时,它按预期工作,我得到"Hello World!" 背部.问题是我不知道如何使其他路由工作,如上例中的"上传".这在独立的Flask中工作正常但在mod_wsgi下我很难过.我唯一可以想象的是在httpd.conf中为我想要的每个端点注册一个单独的WSGI脚本别名,但这会消除Flask的奇特路由支持.有没有办法让这项工作?

python apache mod-wsgi flask

16
推荐指数
1
解决办法
1万
查看次数

无法让OpenCV与Java + Maven + IntelliJ一起使用

我见过很多人向我提出类似的问题,但他们的解决方案对我不起作用.这是我得到的:

我下载了最新的OpenCV for Windows(2.4.9).我把它解压缩到C:\ opencv-249

然后我在IntelliJ中创建了一个新的Maven 3项目.这工作正常,我可以运行编译/包目标等.我可以执行和调试我的程序.这一切都很好.

接下来,我尝试将OpenCV拉入我的测试应用程序,最后得到以下代码:

package com.foo.OpenCVTest;

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.CvType;

/**
 * Created by rick on 5/7/2014.
 */
public class RobotCntrl {
    static{ System.loadLibrary(Core.NATIVE_LIBRARY_NAME); }

    static public void main(String args[]) {
        System.out.println("In main!");
        System.out.println("Core Lib: " + Core.NATIVE_LIBRARY_NAME);

        Mat m  = Mat.eye(3, 3, CvType.CV_8UC1);
        System.out.println("m = " + m.dump());
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我将本地OpenCV添加到我的pom.xml:

<dependency>
    <groupId>org.opencv</groupId>
    <artifactId>opencv</artifactId>
    <version>2.4.9</version>
    <systemPath>${java.home}/../../../../opencv-249/build/java/opencv-249.jar</systemPath>
    <scope>system</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

我将OpenCV添加为项目库: 在此输入图像描述

我修改了IntelliJ VM选项(编辑配置)以更新java.library.path以指向opencv dll: 在此输入图像描述

当我运行应用程序时似乎加载opencv_java249.dll库就好了(它没有抱怨),但对于该行:

 Mat m  = Mat.eye(3, 3, CvType.CV_8UC1);
Run Code Online (Sandbox Code Playgroud)

它爆炸抱怨它找不到底层的n_eye()本机函数:

In main!
Exception …
Run Code Online (Sandbox Code Playgroud)

java opencv intellij-idea maven-3 maven

5
推荐指数
0
解决办法
2193
查看次数

标签 统计

apache ×1

flask ×1

intellij-idea ×1

java ×1

maven ×1

maven-3 ×1

mod-wsgi ×1

opencv ×1

python ×1