Twisted插件在ubuntu12.04和18.04中有不同的结果

2024-06-02 02:31:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在设计一个简单的基于Twisted插件方法的LoRaWAN UDP服务器。它给了我两台电脑不同的结果

  1. 阿里云ECS、Ubuntu 12.04(32位)、Python 2.7.3、Twisted 15.0.0
  2. 物理PC、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\u插件.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创建在同一个文件夹中

我不知道为什么会这样。最新twisted中有插件更新吗?或者是和systemd什么的有关


Tags: frompyimport插件serverubuntushtwisted
1条回答
网友
1楼 · 发布于 2024-06-02 02:31:44

Twisted 15和Twisted 17.9在自动将$PWD包含在sys.path中方面具有不同的行为。扭曲15和扭曲17.9不

将包含您的项目的路径添加到PYTHONPATH(可能通过创建一个virtualenv并使用pip将您的项目进行可编辑的安装),Twisted 17.9会找到代码,因此也会找到您的插件

相关问题 更多 >