2012-03-27 21 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