дамп стека в twisted app.py 'application' ошибка при использовании twistd, но работает с python? - PullRequest
0 голосов
/ 11 марта 2012

Я пытаюсь использовать twisted, но когда я пытаюсь запустить пример кода, поставляемого с пакетом twisted, кажется, что он всегда вылетает, когда я использую "twistd" вместо "python"

например, используя пример кода, заданного с витой, если я бегу по команде: 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 ]

1 голос
/ 11 марта 2012

twistd -y предназначен для использования с файлом python, который содержит переменную с именем application, в этом файле ее нет, поэтому она не будет работать.

Возможно, вы захотите потратить некоторое время на чтение twistd документации , чтобы вы лучше поняли ее роль в экосистеме twisted.

0 голосов
/ 11 марта 2012

Чтобы использовать 'twistd -y', ваш файл .tac должен создать подходящий объект (например, вызвав service.Application ()) и сохранить его в переменной с именем application. Twistd загружает ваш файл .tac и сканирует глобальные переменные на предмет одного из этих имен.

Пожалуйста, прочитайте HOWTO «Использование приложения» для подробностей.

...