Плагин Twisted имеет разные результаты в Ubuntu 12.04 и 18.04 - PullRequest
0 голосов
/ 25 сентября 2018

Я разрабатываю простой UDP-сервер LoRaWAN на основе метода плагина Twisted.Это дает мне разные результаты на двух ПК.

  1. Aliyun ECS, Ubuntu 12.04 (32 бита), Python 2.7.3, Twisted 15.0.0
  2. Физический ПК, Ubuntu 18.04 (64 бита), Python 2.7.15, Twisted 17.9.0

У меня есть следующие подключаемые модули в моем проекте.

$ tree lorawan_server/
lorawan_server/
├── LoRaWANPktFwd.py
├── run.sh
├── shutdown_twistd.sh
├── start_plugin_twistd.sh
└── twisted
    └── plugins
        └── LoRaWANPktFwd_plugin.py

LoRaWANPktFwd.py:

#!/usr/bin/env python
#coding: utf-8

from __future__ import print_function

import getopt
import os
import sys
import string
import struct
import binascii
import time
import uuid

from twisted.internet.protocol import DatagramProtocol
from twisted.internet import reactor, protocol, defer
from twisted.python import log
from twisted.enterprise import adbapi

class LoRaWANPktFwd(DatagramProtocol):

    def datagramReceived(self, data, addr):
        # A simple echo server
        self.transport.write(data, addr)

def main():
    log.startLogging(sys.stdout)
    reactor.listenUDP(1700, LoRaWANPktFwd())
    reactor.run()

if __name__ == "__main__":
    main()

LoRaWANPktFwd_plugin.py:

from zope.interface import implements
from twisted.application.service import IServiceMaker
from twisted.application import internet
from twisted.plugin import IPlugin
from twisted.python import usage
from LoRaWANPktFwd import LoRaWANPktFwd

class Options(usage.Options):
    optParameters = [["port","p", 1700, "The port number to listen on."]]

class LoRaWANPktFwdServiceMaker(object):
    implements(IServiceMaker, IPlugin)
    tapname = "LoRaWAN"
    description = "A Raw UDP-based LoRaWAN Packet Forwarder server."
    options = Options

    def makeService(self, options):
        return internet.UDPServer(int(options["port"]), LoRaWANPktFwd())

serviceMaker = LoRaWANPktFwdServiceMaker()

Если я наберу:

twistd LoRaWAN

, то Ubuntu 18.04 будет жаловаться на следующее:

/usr/bin/twistd: Unknown command: LoRaWAN

И Ubuntu 12.04 начнет работать, с twistd.pid и twistd.log, созданными в одной папке.

Я понятия не имею, почему это происходит.Любое обновление плагина в последней версии?или это связано с systemd или чем-то?

1 Ответ

0 голосов
/ 25 сентября 2018

Twisted 15 и Twisted 17.9 ведут себя по-разному в отношении автоматического включения $PWD в sys.path.Twisted 15 делает, а Twisted 17.9 нет.

Добавьте путь, содержащий ваш проект, к PYTHONPATH (возможно, создавая virtualenv и используя pip для выполнения в нем редактируемой установки вашего проекта), и Twisted 17.9 найдеткод и, следовательно, также ваш плагин.

...