2012-03-27 58 views
0

我有一些从GAE调用Fortran模型的基本问题。致电一个从GAE上传到PiCl​​oud的图书馆?

我将Fortran77代码上传到测试环境,然后使用f2py表示将其编译为.so文件。在以下步骤中,我需要通过在GAE托管的网站上填充Django支持的表单来发送来自用户输入的输入值。是什么让我感到困惑的是:

  1. 既然我已经上传的编译过的文件PiCloud,我还需要发布库(函数?)?如果是这样,我该怎么做(导入上传的库然后发布)?

  2. 如何执行功能(做计算)?对于一个python功能,我可以使用类似:

    “response_val = urlfetch.fetch(URL = url_val,方法= urlfetch.GET,标头= http_headers) output_val = json.loads(response_val.content)['结果']“

但是,fetch中没有”_env = environ_name“模型,所以有什么建议?

在此先感谢和任何建议,欢迎!

回答

4

您是否遵循了在PiCloud中发布Python函数的过程?

它应该像下面(假设你的模块是在Python路径就可以毫无问题地导入):

>>> import cloud 
>>> 
>>> def my_func(x): 
>>> import your_fortran_module 
>>> return your_fortran_module.function(x) 
>>> 
>>> cloud.setkey(api-key, api-secretkey) 
>>> 
>>> cloud.rest.publish(my_func, "label_of_my_func", _env="your_environment") 
"https://api.picloud.com/r/unique_user_id/label_of_my_func" 

如图所示,cloud.rest.publish()将返回一个网址,您可以使用GAE的urlfetch发送您的请求或函数调用。

通过REST调用您发布的功能相关的例子在文档中给出:

import base64 
import json 
import urlfetch 

base64string = base64.encodestring('%s:%s' % (key, secret_ley))[:-1] 
http_headers = {'Authorization' : 'Basic %s' % base64string} 

response = urlfetch.fetch(url='https://api.picloud.com/servers/list/', 
     payload={}, #POST DATA if method was urlfetch.POST 
     method=urlfetch.GET, 
     headers=http_headers) 
data = json.loads(response.content) #{"servers": ["https://api.picloud.com/"]} 

来源:PiCloud REST文档:http://docs.picloud.com/rest.html

+0

感谢。我采取了你的方法,它的工作原理。唯一的问题是你必须在将数据发送到云之前对数据进行编码。 – 2012-03-28 20:22:42