2012-01-29 55 views
0

不知何故,執行存儲在AppEngine db.TextProperty()中的一小段源代碼時出現以下錯誤。看起來第一條語句之前有一點縮進,但是,當我檢查存儲的文本時,我看不到這一點。另外,我AppEngine exec字符串給出SyntaxError

File "...", line 208, in __init__ 
    exec(some_string, g) 
    File "<string>", line 1 
    class Agent(object): 

^ 
SyntaxError: invalid syntax 

任何建議將其存儲在數據存儲區,以什麼其他可能導致此之前,呼籲所有的代碼.strip()? Unicode轉換?線路結束?隨着我發現更多,我會更新這個問題。

+1

不,你考慮過這個疑問,但你應該覺得很* *仔細思考的允許您的應用執行存儲在數據存儲區域中的代碼的安全含義。 – 2012-01-29 16:11:57

+0

是的,我不認爲有任何事情可以做,我允許用戶上傳一些python代碼,然後在服務器上執行它們。 A)這是一門大學課程,所以我個人都認識他們,B)至少AppEngine仍然是沙盒的_whole_應用程序。但是,是的,它將像紙板箱一樣安全。 – noio 2012-01-29 17:24:11

回答

0

哦,事實證明,在存儲代碼之前,我不得不做一個簡單的換行代碼。

的AppEngine上SDK不抱怨行結束,但生產環境,希望把他們歸:

source = re.sub(r'(\r\n|\r|\n)', '\n', source) 
+0

很高興這是它。爲什麼一個字符串的exec有時會失敗的另一個原因是缺少一個尾隨的換行符。我來追加一個額外\ n以防萬一 - 它永遠不會傷害... – 2012-01-30 03:45:44