Вызов библиотеки, загруженной в PiCloud из GAE? - PullRequest
0 голосов
/ 28 марта 2012

У меня есть несколько основных вопросов о вызове модели Фортрана из GAE.

Я загрузил код Fortran77 в тестовую среду, а затем скомпилировал его в файл .so с помощью f2py commend. В следующих шагах мне нужно будет отправить входные значения, которые поступают от пользовательского ввода, заполнив форму с поддержкой Django на веб-сайте GAE. Что меня смутило, так это:

  1. Поскольку я уже загрузил соответствующий файл в PiCloud, нужно ли публиковать библиотеку (функция?)? Если да, то как мне это сделать (импортировать загруженную библиотеку, а затем опубликовать)?

  2. Как выполнить функцию (выполнить расчет)? Для функции Python я могу использовать что-то вроде:

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

Однако в выборке нет модели "_env = environment_name", так что есть предложение?

Заранее спасибо, и любые предложения приветствуются!

1 Ответ

4 голосов
/ 28 марта 2012

Следовали ли вы процедуре публикации функций Python в PiCloud?

Это должно выглядеть примерно так (при условии, что ваш модуль находится в пути 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-адрес, по которому вы можете отправлять свои запросы или вызовы функций, используя urlfetch GAE.

Пример вызова вашей опубликованной функции через 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...