我正在设计一个简单的基于Twisted插件方法的LoRaWAN UDP服务器。它给了我两台电脑不同的结果
在我的项目中有以下插件树
$ 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什么的有关
Twisted 15和Twisted 17.9在自动将
$PWD
包含在sys.path
中方面具有不同的行为。扭曲15和扭曲17.9不将包含您的项目的路径添加到
PYTHONPATH
(可能通过创建一个virtualenv并使用pip将您的项目进行可编辑的安装),Twisted 17.9会找到代码,因此也会找到您的插件相关问题 更多 >
编程相关推荐