我有一些从GAE调用Fortran模型的基本问题。
我将Fortran77代码上传到测试环境,然后使用f2py commend将其编译为.so文件。在以下步骤中,我将需要通过在GAE托管网站上填写Django支持的表单来发送来自用户输入的输入值。使我困惑的是:
由于我已经将编译后的文件上传到PiCloud,我是否还需要发布库(函数?)?如果是这样,我该怎么做(导入上传的库然后发布)?
如何执行此功能(进行计算)?对于python函数,我可以使用类似的东西:
“response_val = urlfetch.fetch(url = url_val,method = urlfetch.GET,headers = http_headers) output_val = json.loads(response_val.content)['result']“
但是,fetch中没有“_env = environ_name”模型,所以有什么建议吗?
提前致谢,欢迎任何建议!
答案 0 :(得分: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()将返回一个URL,您可以使用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