簡體   English   中英

重新加載頁面后,Bottle REST API生成不同的結果

[英]Bottle REST API generates different results after page reloading

我剛剛構建了我的第一個REST API服務,但是它的行為很奇怪...當調用此REST API ,它會進行一些計算並返回結果。 但是,在我的設置中,無需重新啟動REST服務器,只有第一次提交的結果是正確的。 自第二次提交以來,結果一直在下降。 有人遇到過這個問題嗎?

主辦

all_dic = {"APPRAT":APPRAT, "APPNUM":APPNUM, "APSPAC":APSPAC, "KOC":KOC, "METHAF":METHAF, "WETTED":WETTED,
           "METHOD":METHOD, "AIRFLG":AIRFLG, "YLOCEN":YLOCEN, "GRNFLG":GRNFLG, "GRSIZE":GRSIZE,
           "ORCFLG":ORCFLG, "INCORP":INCORP, "SOL":SOL, "METHAP":METHAP, "HYDHAP":HYDHAP, "FOTHAP":FOTHAP}

data = json.dumps(all_dic)
url='http://localhost:7777/myroute/' 
http_headers = {'Content-Type' : 'application/json'}
response = urlfetch.fetch(url=url, payload=data, method=urlfetch.POST, headers=http_headers)   
self.data_a= json.loads(response.content)["ff"]

REST服務器

from bottle import route, run, post, request
import json

@post('/myroute/') 
def myroute():
    APPRAT = request.json["APPRAT"]
    APPNUM = request.json["APPNUM"]
    APSPAC = request.json["APSPAC"]
    KOC = request.json["KOC"]
    METHAF = request.json["METHAF"]
    WETTED = request.json["WETTED"]
    METHOD = request.json["METHOD"]
    AIRFLG = request.json["AIRFLG"]
    YLOCEN = request.json["YLOCEN"]
    GRNFLG = request.json["GRNFLG"]
    GRSIZE = request.json["GRSIZE"]
    ORCFLG = request.json["ORCFLG"]
    INCORP = request.json["INCORP"]
    SOL = request.json["SOL"]
    METHAP = request.json["METHAP"]
    HYDHAP = request.json["HYDHAP"]
    FOTHAP = request.json["FOTHAP"]

    import geneec
    ff=geneec.geneec2(APPRAT,APPNUM,APSPAC,KOC,METHAF,WETTED,METHOD,AIRFLG,YLOCEN,GRNFLG,GRSIZE,ORCFLG,INCORP,SOL,METHAP,HYDHAP,FOTHAP)
    print all the inputs
    print ff
    return json.dumps({'ff':ff})

run(host='localhost', port=7777, debug=True)

其中geneec是FORTRAN copiled成使用Python模塊(geneec.pyd)程序f2py 我已經在本地的純Python環境中測試了這種混淆,並且效果很好(多次提交后結果不會更改。)那么有人可以給我一些關於此問題的建議嗎? 謝謝!

更新

下面是在服務器端打印的結果。 我所看到的是同一組輸入生成了不同的輸出

{'GRSIZE': 'a', 'APSPAC': '6', 'INCORP': 0, 'ORCFLG': 'a', 'KOC': '2', 'METHAP': '6', 'SOL': '3', 'YLOCEN': '12', 'FOTHAP'
 'AIRFLG': 'a', 'APPRAT': '4', 'METHOD': 'a', 'WETTED': 'Yes'}
(576.0662841796875, 530.255615234375, 331.788330078125, 153.9146728515625, 104.5523681640625, 'AERL_A', 8.471641540527344,
127.0.0.1 - - [11/Dec/2013 23:41:43] "POST /myroute/ HTTP/1.1" 200 150
{'GRSIZE': 'a', 'APSPAC': '6', 'INCORP': 0, 'ORCFLG': 'a', 'KOC': '2', 'METHAP': '6', 'SOL': '3', 'YLOCEN': '12', 'FOTHAP'
 'AIRFLG': 'a', 'APPRAT': '4', 'METHOD': 'a', 'WETTED': 'Yes'}
(546.4204711914062, 480.0862731933594, 245.5520477294922, 98.00833892822266, 65.50333404541016, 'AERL_A', 8.47164154052734
127.0.0.1 - - [11/Dec/2013 23:41:52] "POST /myroute/ HTTP/1.1" 200 152
{'GRSIZE': 'a', 'APSPAC': '6', 'INCORP': 0, 'ORCFLG': 'a', 'KOC': '2', 'METHAP': '6', 'SOL': '3', 'YLOCEN': '12', 'FOTHAP'
 'AIRFLG': 'a', 'APPRAT': '4', 'METHOD': 'a', 'WETTED': 'Yes'}
(535.4012451171875, 458.6314392089844, 213.1800079345703, 81.3574447631836, 54.282127380371094, 'AERL_A', 8.47164154052734
127.0.0.1 - - [11/Dec/2013 23:41:58] "POST /myroute/ HTTP/1.1" 200 152
{'GRSIZE': 'a', 'APSPAC': '6', 'INCORP': 0, 'ORCFLG': 'a', 'KOC': '2', 'METHAP': '6', 'SOL': '3', 'YLOCEN': '12', 'FOTHAP'
 'AIRFLG': 'a', 'APPRAT': '4', 'METHOD': 'a', 'WETTED': 'Yes'}
(530.4227294921875, 448.1323547363281, 198.46009826660156, 74.41312408447266, 49.63011932373047, 'AERL_A', 8.4716415405273
127.0.0.1 - - [11/Dec/2013 23:42:04] "POST /myroute/ HTTP/1.1" 200 153

我懷疑這與REST調用本身有關,因為您將打印出相同的輸入。 我會研究一下geneec2在做什么。 您可以將所有參數設置為默認值(而不是請求信息)來測試REST調用,然后查看它是否可以解決任何問題。 如果那不能產生一致的結果,那么您將需要使用一堆打印語句重新編譯geneec2,並查看是否可以更好地了解出了什么問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM