2010-01-03 7 views
0
import cherrypy 
import os 

PORT = 8080 

class intelServ: 
    def index(self, botkey = None, userkey = None, network = None, user = None, channel = None, msg = None, step = None, **args): 

     # If any necessary parameters are missing, the bot should fail silently. 
     #if not botkey or not userkey or not network or not user or not channel or not msg: 
     # return 'failing' 

     chatLog = Chat() 
     chatLog.genLogfile(botkey, userkey) 

     return "You said: " + msg 
    index.exposed = True 


class Chat: 
    def genLogfile(self, botkey, userkey): 
     botHome = os.path.join(os.curdir, botkey) 
     chatLog = os.path.join(botHome, userkey) 
     print botHome 
     print chatLog 

     # check if bot has a home, if not make one 
     if not os.path.exists(botHome): 
      os.mkdir(botHome) 

     # check if communication is already in progress, if not start it. 
     if not os.path.exists(chatLog): 
      FILE = open(chatLog, "w") 
      FILE.close() 
      FILE = open(chatLog+".step","w") 
      FILE.close() 

# configure and start our cherrypy server 
cherrypy.config.update({'server.socket_port': PORT, 'server.socket_host': '0.0.0.0'}) 
cherrypy.quickstart(intelServ()) 

Ce code renvoie le retraçage suivant et je ne peux pas comprendre pourquoi:assistance dépannage d'une erreur python/cherrypy

> 500 Internal Server Error 
> 
> The server encountered an unexpected 
> condition which prevented it from 
> fulfilling the request. 
> 
> Traceback (most recent call last): 
> File 
> "c:\python26\lib\site-packages\cherrypy\_cprequest.py", 
> line 606, in respond 
>  cherrypy.response.body = self.handler() File 
> "c:\python26\lib\site-packages\cherrypy\_cpdispatch.py", 
> line 25, in __call__ 
>  return self.callable(*self.args, **self.kwargs) File "D:\code\pycode\spam\chatbot.py", 
> line 14, in index 
>  chatLog.genLogfile(botkey, userkey) File 
> "D:\code\pycode\spampy\chatbot.py", 
> line 22, in genLogfile 
>  botHome = os.path.join(os.curdir, botkey) File 
> "c:\python26\lib\ntpath.py", line 73, 
> in join 
>  elif isabs(b): File "c:\python26\lib\ntpath.py", line 57, 
> in isabs 
>  s = splitdrive(s)[1] File "c:\python26\lib\ntpath.py", line 125, 
> in splitdrive 
>  if p[1:2] == ':': TypeError: 'NoneType' object is unsubscriptable 
> 
> Powered by CherryPy 3.1.2 

Répondre

1

Il semble que le paramètre botkey tel qu'il est fourni à intelServ.index() est Aucun (d'où le 'NoneType'). Vous devriez décommenter votre code de validation d'entrée.