从mod_python apache模块调用时,Obspy.read()无效

时间:2013-05-17 12:23:59

标签: python web-services apache

我正在尝试创建一个简单的Web服务,该服务读取MSEED文件并输出一些信息。

最合理的选择似乎是使用python和优秀的obspy模块(用于地震学/地震观测站的Python工具箱),它在地震学界广泛使用。

我成功地阅读了一个文件,并通过这个简单的python代码从中获取了一些信息:

import obspy
import numpy
import sys


my_filename = "SOME FILE"
my_start_time =  "2012-01-01T08:00:00"
my_end_time =  "2012-01-01T09:00:00"

dt = obspy.UTCDateTime(my_start_time)
et = obspy.UTCDateTime(my_end_time)
st = obspy.read(my_filename, starttime=dt, endtime=et)
....then do something....

现在,如果我想将它作为一个Web服务实现,在几个不同的选择中我可以在Apache上安装mod_python,并以不同的方式调用这样的脚本。

我按如下方式操作(脚本位于名为test.py的文件中):

from mod_python import util
import obspy
import numpy
import sys

def index(req):
    [...]
    startdate="2012-01-01T08:00:01"
    enddate="2012-01-01T08:10:00"
    myfilename=" SOME FILE"
    dt = obspy.UTCDateTime(startdate)
    et = obspy.UTCDateTime(enddate)

    ##### read file
    st = obspy.read(my_filename, starttime=dt, endtime=et) ******
    [...]

最后一行会发生什么事情,而不会出现任何错误。 从我的服务器调用脚本时     http://localhost.my/cgi-bin/test.py 它工作得很好,直到最后一行,然后它甚至不打印任何东西,但再次没有输出错误

Eveno更奇怪,如果我用

更改最后一行
st = obspy.read(my_filename, headonly=True)

然后它有效。

我尝试了什么:

  1. 更改文件/文件夹的权限。脚本和文件位于我的/ var / www / cgi-bin目录中。将所有人都可读的文件和目录分配不起作用
  2. 将文件移至不同的文件夹
  3. 更改文件/目录的所有者(到www-data)
  4. 但它仍然不起作用。

    我不明白它是obspy模块的问题还是apache mod_python的一些限制。

    有关如何解决此问题的任何想法?

1 个答案:

答案 0 :(得分:0)

我从obspy github issue page收到的最佳答案如下

  

这似乎与内存分配问题有关。你可以尝试   更新到我们最近制作的最新ObsPy存储库版本   对此进行更改并查看是否可以解决您的问题。我很确定   它不是与权限相关的问题。

     

否则,如果你不喜欢使用mod_python,你可以尝试一下   很多很常见的Python Web框架之一。   如果您只需要一个简单的Web服务,微框架可能会   很适合你:

     

http://flask.pocoo.org/ http://www.pylonsproject.org/   http://www.cherrypy.org/当然,Django也可能会吸引你。

     

干杯!