小编Nic*_*ord的帖子

在Flask中将默认网址更改为静态媒体

我使用Flask建立了一个网站,我在内置开发服务器上正常工作没有任何问题.我也能够在mod_wgsi下的生产服务器上运行.但是,我从静态/ CGI/PHP-5.2应用程序托管我的静态媒体,如果不手动更改我的html文件中的所有URL,我就无法让Flask"看到"它.

问题似乎是基本的Flask设置要求静态文件在烧瓶应用程序中.详情请见此处.基本上,我认为我需要更改以下一个班轮的"静态"部分的网址:

<link rel="stylesheet" href="{{url_for('static', filename='css/print.css')}}" type="text/css" media="print"/> 
Run Code Online (Sandbox Code Playgroud)

看起来我可以在init .py,这里的说明中更改它,但是如下定义static_path似乎不起作用.

app = Flask(__name__, static_path = '/web_media')
Run Code Online (Sandbox Code Playgroud)

要清楚,如果我像这样手动定义我的URL:

<link rel="stylesheet" href="/web_media/css/print.css" type="text/css" media="print"/>
Run Code Online (Sandbox Code Playgroud)

一切正常.任何帮助将不胜感激.

static-media flask

9
推荐指数
2
解决办法
8344
查看次数

Hadoop Streaming:Mapper'包装'二进制可执行文件

我有一个管道,我目前在大型大学计算机集群上运行.出于发布目的,我想将其转换为mapreduce格式,以便任何人都可以使用像amazon webservices(AWS)这样的hadoop集群来运行它.该管道目前由一系列python脚本组成,这些脚本包含不同的二进制可执行文件,并使用python子进程和tempfile模块管理输入和输出.不幸的是,我没有写二进制可执行文件,其中许多不是采用STDIN或不以"可用"的方式发出STDOUT(例如,只将它发送到文件).这些问题就是为什么我把它们中的大部分包装在python中.

到目前为止,我已经能够修改我的Python代码,以便我有一个mapper和一个reducer,我可以在我的本地机器上以标准的"测试格式"运行.

$ cat data.txt | mapper.py | reducer.py
Run Code Online (Sandbox Code Playgroud)

映射器以它包装的二进制文件的方式格式化每一行数据,使用subprocess.popen将文本发送到二进制文件(这也允许我屏蔽很多虚假的STDOUT),然后收集我想要的STOUT,并格式化它到适合减速器的文本行.当我尝试在本地hadoop安装上复制命令时出现问题.我可以让mapper执行,但它会给出一个错误,表明它无法找到二进制可执行文件.

在main()文件"/Users/me/Desktop/hadoop-0.21.0/./mapper.py"中输入文件"/Users/me/Desktop/hadoop-0.21.0/./phyml.py",第69行,第66行,主要phyml(无)文件"/Users/me/Desktop/hadoop-0.21.0/./mapper.py",第46行,在phyml ft = Popen(cli_parts,stdin = PIPE,stderr = PIPE ,stdout = PIPE)文件"/Library/Frameworks/Python.framework/Versions/6.1/lib/python2.6/subprocess.py",第621行,在init errread,errwrite)文件"/Library/Frameworks/Python.framework /Versions/6.1/lib/python2.6/subprocess.py",第1126行,在_execute_child中引发child_exception OSError:[Errno 13]权限被拒绝

我的hadoop命令如下所示:

./bin/hadoop jar /Users/me/Desktop/hadoop-0.21.0/mapred/contrib/streaming/hadoop-0.21.0-streaming.jar \
-input /Users/me/Desktop/Code/AWS/temp/data.txt \
-output /Users/me/Desktop/aws_test \
-mapper  mapper.py \
-reducer  reducer.py \
-file /Users/me/Desktop/Code/AWS/temp/mapper.py \
-file /Users/me/Desktop/Code/AWS/temp/reducer.py \
-file /Users/me/Desktop/Code/AWS/temp/binary
Run Code Online (Sandbox Code Playgroud)

正如我上面提到的,它看起来像mapper不知道二进制文件 - 也许它没有被发送到计算节点?不幸的是我无法确定问题是什么.任何帮助将不胜感激.看到用python编写的包含二进制可执行文件的一些hadoop流映射器/缩减器会特别好看.我无法想象我是第一个尝试这样做的人!事实上,这是另一篇提出基本相同问题的帖子,但尚未得到答复......

Hadoop/Elastic Map使用二进制可执行文件减少?

python binary streaming hadoop mapreduce

8
推荐指数
1
解决办法
3038
查看次数

标签 统计

binary ×1

flask ×1

hadoop ×1

mapreduce ×1

python ×1

static-media ×1

streaming ×1