堆栈转储在扭曲的app.py'应用程序'错误时使用twistd但与python一起使用?

时间:2012-03-10 20:24:32

标签: python twisted twistd

我正在尝试使用twisted但是当我尝试运行一些扭曲包提供的示例代码时,它似乎总是崩溃当我使用“twistd”而不是“python”

例如,使用twisted赋予的示例代码, 如果我跑到命令:twisted -ny echoserv.py

Unhandled Error
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/twisted/application/app.py", line 652, in run
    runApp(config)
  File "/usr/lib/python2.7/site-packages/twisted/scripts/twistd.py", line 23, in runApp
    _SomeApplicationRunner(config).run()
  File "/usr/lib/python2.7/site-packages/twisted/application/app.py", line 386, in run
    self.application = self.createOrGetApplication()
  File "/usr/lib/python2.7/site-packages/twisted/application/app.py", line 451, in createOrGetApplication
    application = getApplication(self.config, passphrase)
---  ---
  File "/usr/lib/python2.7/site-packages/twisted/application/app.py", line 462, in getApplication
    application = service.loadApplication(filename, style, passphrase)
  File "/usr/lib/python2.7/site-packages/twisted/application/service.py", line 405, in loadApplication
    application = sob.loadValueFromFile(filename, 'application', passphrase)
  File "/usr/lib/python2.7/site-packages/twisted/persisted/sob.py", line 211, in loadValueFromFile
    value = d[variable]
exceptions.KeyError: 'application'

Failed to load application: 'application'
Could not find 'application' in the file. To use 'twistd -y', your .tac
file must create a suitable object (e.g., by calling service.Application())
and store it in a variable named 'application'. twistd loads your .tac file
and scans the global variables for one of this name.

Please read the 'Using Application' HOWTO for details.


我使用的是Twisted版本11.0.0,但之后我尝试了12.0.0,但我遇到了同样的问题。

我正在使用的python版本是2.7.2

任何关于做什么的想法都会有所帮助。我一直试图解决这个问题几天了。谢谢!

2 个答案:

答案 0 :(得分:1)

twistd -y旨在与包含名为application的变量的python文件一起使用,此文件中没有,因此它不起作用。

您可能希望花一些时间阅读twistd的{​​{3}},以便更清楚地了解其在twisted生态系统中的作用。

答案 1 :(得分:0)

要使用'twistd -y',您的.tac文件必须创建一个合适的对象(例如,通过调用service.Application())并将其存储在名为'application'的变量中。 twistd加载.tac文件并扫描全局变量以获取此名称之一。

请阅读“使用应用程序”HOWTO了解详情。