从GAE调用PiCloud上传的图书馆?

时间:2012-03-27 21:58:47

标签: python google-app-engine

我有一些从GAE调用Fortran模型的基本问题。

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

  1. 由于我已经将编译后的文件上传到PiCl​​oud,我是否还需要发布库(函数?)?如果是这样,我该怎么做(导入上传的库然后发布)?

  2. 如何执行此功能(进行计算)?对于python函数,我可以使用类似的东西:

    “response_val = urlfetch.fetch(url = url_val,method = urlfetch.GET,headers = http_headers) output_val = json.loads(response_val.content)['result']“

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

    提前致谢,欢迎任何建议!

1 个答案:

答案 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