2015-07-10 103 views
1

此腳本已工作正常進行編譯,但是現在,當我去執行它,它失敗編譯:Python腳本突然失敗,「預計縮進塊」

File "/Users/camerongordon/Desktop/Python Scripts/hello.py", line 12 
    def ConnectToDatabase(): 
    ^
IndentationError: expected an indented block 

下面是腳本:

import tornado.ioloop 
import tornado.web 
from tornado.httpclient import AsyncHTTPClient 
from tornado import gen 
from tornado.options import define, options 
from apscheduler.schedulers.tornado import TornadoScheduler 
from torndb import Connection 

class MainHandler(tornado.web.RequestHandler): 
    def get(self): 

def ConnectToDatabase(): 
    db = Connection("127.0.0.1", 'helloworld', user='root', password='') 
    return db 

application = tornado.web.Application 
([ 
    (r"/", MainHandler), 
]) 

def ProcessQueue: 

def main(): 
    # http://stackoverflow.com/questions/29316173/apscheduler-run-async-function-in-tornado-python 
    # https://github.com/teriyakichild/example-scheduler/blob/master/example_scheduler/__init__.py 

    application.listen(8888) 

    db = ConnectToDatabase() 

    scheduler = TornadoScheduler() 

    scheduler.add_job(ProcessQueue, 'interval', name='tick-interval-3-seconds', seconds=4, timezone='America/Chicago') 

    scheduler.start() 

    tornado.ioloop.IOLoop.current().start() 

if __name__ == "__main__": 
    main(); 

這是怎麼回事?一切看起來在語法上都是正確的,並且正確縮進。

+0

您錯過了'MainHandler'類的'get'方法的定義。 –

回答

3
class MainHandler(tornado.web.RequestHandler): 
    def get(self): 

def ConnectToDatabase(): 
    db = Connection("127.0.0.1", 'helloworld', user='root', password='') 
    return db 

你的def get(self):要求方法體來;如果你添加pass,事情就會起作用。你可能,意外,省略或刪除了一些代碼:

class MainHandler(tornado.web.RequestHandler): 
    def get(self): 
     pass 

def ConnectToDatabase(): 
    db = Connection("127.0.0.1", 'helloworld', user='root', password='') 
    return db 

而且,你的縮進是不平等的 - 這不是一個好兆頭。使用適當的編輯器。

+0

[官方風格指南](https://www.python.org/dev/peps/pep-0008/)指出縮進應該是4個空格。請確保在Python中進行編程時爲此配置適當的編輯器(例如Sublime Text,Notepad ++,vim,emacs等)。 – Kupiakos

0

您可以嘗試突出顯示腳本並將所有縮進轉換爲製表符?崇高有一個選項。另外,你def get():沒有body。