Уведомления

Группа в Telegram: @pythonsu

#1 Июль 26, 2016 20:58:42

Diez37
Зарегистрирован: 2016-07-26
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

twisted run application

Всем доброго времени суток.

Суть дела.

Пытаюсь запустить приложение twisted из этого примера.

вот код

 import os
from twisted.application import service, internet
from twisted.web import static, server
from twisted.python.log import ILogObserver, FileLogObserver
from twisted.python.logfile import DailyLogFile
def getWebService():
    """
    Return a service suitable for creating an application object.
    This service is a simple web server that serves files on port 8080 from
    underneath the current working directory.
    """
    # create a resource to serve static files
    fileServer = server.Site(static.File(os.getcwd()))
    return internet.TCPServer(8080, fileServer)
# this is the core part of any tac file, the creation of the root-level
# application object
application = service.Application("Demo application")
logfile = DailyLogFile("twistd.log", ".")
application.setComponent(ILogObserver, FileLogObserver(logfile).emit)
# attach the service to its parent application
service = getWebService()
service.setServiceParent(application)

ввожу в консоли команду twistd –python ./test.py

вываливается ошибка в лог

2016-07-26 20:52:40+0300 Loading ./test.py…
2016-07-26 20:52:40+0300 Loaded.
2016-07-26 20:52:40+0300 twistd 16.3.0 (/usr/bin/python3.5 3.5.1) starting up.
2016-07-26 20:52:40+0300 reactor class: twisted.internet.epollreactor.EPollReactor.
2016-07-26 20:52:40+0300 Site starting on 8080
2016-07-26 20:52:40+0300 Starting factory <twisted.web.server.Site object at 0x7ffa689cb4a8>
2016-07-26 20:52:40+0300 Traceback (most recent call last):
2016-07-26 20:52:40+0300 File “/usr/bin/twistd”, line 18, in <module>
2016-07-26 20:52:40+0300 run()
2016-07-26 20:52:40+0300 File “/usr/lib/python3.5/site-packages/twisted/scripts/twistd.py”, line 29, in run
2016-07-26 20:52:40+0300 app.run(runApp, ServerOptions)
2016-07-26 20:52:40+0300 File “/usr/lib/python3.5/site-packages/twisted/application/app.py”, line 643, in run
2016-07-26 20:52:40+0300 runApp(config)
2016-07-26 20:52:40+0300 File “/usr/lib/python3.5/site-packages/twisted/scripts/twistd.py”, line 25, in runApp
2016-07-26 20:52:40+0300 _SomeApplicationRunner(config).run()
2016-07-26 20:52:40+0300 File “/usr/lib/python3.5/site-packages/twisted/application/app.py”, line 378, in run
2016-07-26 20:52:40+0300 self.postApplication()
2016-07-26 20:52:40+0300 File “/usr/lib/python3.5/site-packages/twisted/scripts/_twistd_unix.py”, line 220, in postApplication
2016-07-26 20:52:40+0300 untilConcludes(os.write, statusPipe, “0”)
2016-07-26 20:52:40+0300 File “/usr/lib/python3.5/site-packages/twisted/python/util.py”, line 715, in untilConcludes
2016-07-26 20:52:40+0300 return f(*a, **kw)
2016-07-26 20:52:40+0300 TypeError: a bytes-like object is required, not ‘str’

если вводить twistd –nodaemon –python ./test.py, то все замечтально стратует

собственно вопрос, сталкивался с такой шнягой кто ни то? как побороть, ну или хотя бы пните в нужном направлении, гуглил 2 дня, ответов связанных именно с twisted ни одного не нашел ((

Отредактировано Diez37 (Июль 26, 2016 21:00:11)

Офлайн

#2 Июль 26, 2016 22:10:01

Diez37
Зарегистрирован: 2016-07-26
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

twisted run application

нашел ошибку в файле twisted.scripts._twistd_unix.py

в 221 строке

 untilConcludes(os.write, statusPipe, "0")

функция os.write ожидает набор байт, а ей передают строку, что в 3 питоне разные вещи, наверное осталось от пережиток 2 питона

исправил на
 untilConcludes(os.write, statusPipe, "0".encode())
и все завелось ))

Отредактировано Diez37 (Июль 26, 2016 22:19:35)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version