如何将日志记录添加到带有时间戳的文件到 Raspberry Pi 的 Python TCP 服务器

2024-02-29

我的项目有点陷入困境,我迫切需要帮助。我需要一个简单的 TCP 服务器 python 代码,它具有日志记录和时间戳等功能,我可以将其用于我的 Raspberry Pi。这是我的最后一年项目。

我看过一些例子,但由于我在编写自己的脚本/代码方面没有太多经验,所以我不太确定如何去做。如果有人能够通过解释和一些示例(如果可能的话)指导我正确的方向,我将不胜感激。

我正在使用 HERCULES SETUP UTILITY ,它充当我的 TCP 客户端,而我的 Visual Studio Python 代码充当服务器。我的服务器现在可以接收客户端发送的数据,我只是似乎无法添加可以将发送的数据保存到文本文件中的日志文件。有人可以给我看一些示例或参考吗?你的帮助意义重大。到目前为止,这是我的代码:

from socket import *
import thread

BUFF = 1024 # buffer size
HOST = '172.16.166.206'# IP address of host
PORT = 1234 # Port number for client & server to recieve data
def response(key):
    return 'Sent by client'

def handler(clientsock,addr):
    while 1:
        data = clientsock.recv(BUFF) # receive data(buffer).
        print 'data:' + repr(data)   #Server to recieve data sent by client.
        if not data: break           #If connection is closed by client, server will        break and stop recieving data.
        print 'sent:' + repr(response('')) # respond by saying "Sent By Client". 



if __name__=='__main__':
    ADDR = (HOST, PORT) #Define Addr
    serversock = socket(AF_INET, SOCK_STREAM) 
    serversock.bind(ADDR) #Binds the ServerSocket to a specific address (IP address and     port number)
    serversock.listen(0)
    while 1:
        print 'waiting for connection...'
        clientsock, addr = serversock.accept()
        print '...connected from:', addr #show its connected to which addr
        thread.start_new_thread(handler, (clientsock, addr ))

要将日志记录添加到带有时间戳的文件中,您可以使用logging module:

import logging

logging.basicConfig(level=logging.INFO, 
                    filename='myserver.log', # log to this file
                    format='%(asctime)s %(message)s') # include timestamp
logging.info("some message")

如果你运行代码;你应该看到myserver.log(+/- 您的时区和当前时间):

2013-12-24 09:20:17,739 some message

这是 TCP 服务器的完整示例,它将从客户端接收的每个行添加到前面:"Sent by Client: "短语并将其发回:

#!/usr/bin/env python
import logging
import sys
from SocketServer import ThreadingTCPServer, StreamRequestHandler

info = logging.getLogger(__name__).info

class EchoLineHandler(StreamRequestHandler):
    def handle(self):
        info("handling request from %s", self.client_address)
        # prepend each line (b'\n') and send it back
        for line in self.rfile:
            self.wfile.write(b"Sent by Client: ") # assume ascii-based encoding
            self.wfile.write(line)
        info("done %s", self.client_address)

def test(ServerClass=ThreadingTCPServer, HandlerClass=EchoLineHandler):
    # configure logging
    logging.basicConfig(level=logging.INFO,
                        filename='server.log', # log to this file
                        format='%(asctime)s %(message)s') # include timestamp

    # parse command line arguments
    host, port = 'localhost', 8826
    if len(sys.argv) > 1:
        host_, separator, port_ = sys.argv[1].rpartition(":")
        port = int(port_)
        if separator: # if ":" in sys.argv[1]
            host = host_ # accept any host, including empty

    # listen for connections
    server = ServerClass((host, port), HandlerClass)
    info("Serving on %s port %s", *server.server_address)
    try:
        server.serve_forever()
    finally:
        info("quit.")

if __name__=="__main__":
    test()

如果代码保存在则运行服务器echo_line_server.py:

$ python -mecho_line_server localhost:8826 & tail -F server.log
2013-12-24 17:09:38,089 Serving on 127.0.0.1 port 8826

运行客户端:

$ echo abc | nc localhost 8826
Sent by Client: abc
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将日志记录添加到带有时间戳的文件到 Raspberry Pi 的 Python TCP 服务器 的相关文章

  • Pythonanywhere 安装并导入新模块

    我是 Pythonanywhere 的新手 想要安装 soundcloud Python 模块 我打开了 Bash 控制台并给出了pip install user soundcloud命令 它似乎已经安装 正如我使用时在模块列表中看到的那样
  • 如何将字典转换为字符串

    我正在尝试使用提供的解决方案here https stackoverflow com questions 5192753 how to get the number of occurrences of each character usin
  • Matplotlib imshow:如何在矩阵上应用蒙版

    我正在尝试以图形方式分析二维数据 matplotlib imshow在这方面非常有用 但我觉得如果我可以从矩阵中排除一些单元格 超出感兴趣范围的值 我可以更多地利用它 我的问题是这些值使我感兴趣的范围内的色彩图 变平 排除这些值后 我可以获
  • 在 HSV 颜色空间内定义组织学图像掩模的颜色范围(Python、OpenCV、图像分析):

    为了根据颜色将组织学切片分成多个层 我修改了 OpenCV 社区提供的一些广泛分布的代码 1 我们的染色程序用不同的颜色标记组织横截面的不同细胞类型 B 细胞为红色 巨噬细胞为棕色 背景细胞核为蓝色 I m interested in se
  • Python 中的自然日/相对日

    我想要一种在 Python 中显示日期项目的自然时间的方法 类似于 Twitter 将显示 刚才 几分钟前 两小时前 三天前 等消息 Django 1 0 在 django contrib 中有一个 人性化 方法 我没有使用 Django
  • 代码运行时出现内存问题(Python、Networkx)

    我编写了一个代码来生成具有 379613734 条边的图 但由于内存问题 代码无法完成 当经过 6200 万行时 大约会占用服务器内存的 97 所以我杀了它 您有解决这个问题的想法吗 我的代码是这样的 import os sys impor
  • 会话cookie太大烧瓶应用程序[重复]

    这个问题在这里已经有答案了 我正在尝试使用会话 本地 加载某些数据 并且它已经工作了一段时间 但是现在我收到以下警告 并且不再加载通过会话加载的数据 b session cookie 太大 该值是 13083 字节 但是 标头需要 44 个
  • Visual Studio Code 调试控制台中的 pydevd 警告

    我已经搜索了一段时间但找不到任何相关问题 当使用 Visual Studio Code 和 Python 扩展来调试大型元素时 计算表示或获取属性可能需要一些时间 在这些情况下 会出现如下警告 pydevd 警告 计算 DataFrame
  • 如何检查Docker中是否安装了python包?

    我使用Dockerfile成功构建了一个容器 但是 我的代码在容器中不起作用 如果我手动安装所有软件包 它确实有效 我假设我搞砸了一些导致 docker 没有正确安装软件包的事情 所以 我想检查Docker容器中是否安装了python包 最
  • 字典键中的通配符

    假设我有一本字典 rank dict V 1 A 2 V 3 A 4 正如您所看到的 我在一个 V 的末尾添加了一个 虽然 3 可能只是 V 的值 但我想要 V1 V2 V2234432 等的另一个密钥 我想检查它 checker V30
  • XGBOOST 功能名称错误 - Python

    也许这个问题已经以不同的形式被问过很多次了 但是 我的问题是当我使用XGBClassifier 对于像数据这样的产品 我收到功能名称不匹配错误 我希望有人能告诉我我做错了什么 这是我的代码 顺便说一句 数据完全是编造的 import pan
  • 调度算法,找到设定长度的所有非重叠区间

    我需要为我的管理应用程序实现一种算法 该算法将告诉我何时可以将任务分配给哪个用户 我实现了一个蛮力解决方案 它似乎有效 但我想知道是否有更有效的方法来做到这一点 为了简单起见 我重写了算法以对数字列表进行操作 而不是数据库查询等 下面我将尝
  • 从 SQL 数据库导入表并按日期过滤行时,将 Pandas 列解析为日期时间

    我有一个DataFrame列名为date 我们如何将 日期 列转换 解析为DateTime object 我使用 Postgresql 数据库加载日期列sql read frame 的一个例子date列是2013 04 04 我想做的是选择
  • 为什么使用 LAMP 托管时避免使用 CGI for Python?

    我已经使用 PHP 多年了 最近我在论坛上看到很多帖子说PHP 已经过时了 现代编程语言更简单 更安全等等 所以 我决定开始学习Python 由于我习惯使用 PHP 因此我刚刚开始通过上传 htaccess 文件来构建页面 addtype
  • 在 pandas DataFrame 中使用比较列表的问题

    我在 pandas 中有一个 DataFrame 其列类型之一是 int 上的列表 如下所示 df pandas DataFrame 1 2 3 4 5 6 7 8 9 10 columns a b c d gt gt gt df a b
  • 删除aws beanstalk上的uuid python包

    这是针对所提出问题的后续帖子 问题here https stackoverflow com questions 44421761 flask beanstalk deployment errors 以防万一对其他人有用 自从第一篇文章以来
  • 当没有 main 函数时,为什么 sys.settrace 不触发?

    import sys def printer frame event arg print frame event arg return printer sys settrace printer x 1 sys settrace None 上
  • Python 中的否定

    如果路径不存在 我尝试创建一个目录 但是 不 运算符不起作用 我不知道如何在 Python 中进行否定 正确的方法是什么 if os path exists usr share sounds blues proc subprocess Po
  • 在绘图中的线间隙之间添加注释

    I have a graph like this 而不是在上面的日子symbol 我想知道是否有办法可以在行之间添加此注释 从一个点到另一个点 如果以防万一 这可能是重复的 我深表歉意 This is my expected output
  • 检查一个数是否是完全平方数

    如何检查一个数是否是完全平方数 速度并不重要 目前 只是工作 See also Integer square root in python https stackoverflow com questions 15390807 依赖任何浮点计

随机推荐

  • ExtJS 中自动调整文本字段标签大小

    在 ExtJS 中 是否可以将文本字段的标签调整为最佳大小以使其文本适合一行 The labelWidth http docs sencha com extjs 4 1 1 api Ext form Labelable cfg labelW
  • 按字母顺序搜索名称的查询

    我已经用过LIKE条件 但它要求我将全名输入数据库才能找到名称 if searchby equals Name try Class forName sun jdbc odbc JdbcOdbcDriver System out printl
  • 即使忘记了“new”,我什么时候应该自动创建一个对象?

    假设我有以下对象构造函数 function Foo bar this bar bar 如果我在全局范围内运行该函数而不使用new关键字然后bar将被设置在任何范围内Foo 被称为 var foo Foo 42 console log bar
  • 为什么C风格的注释会让insert语句运行两次?

    长话短说 我开始遇到 ORA 00001 主键违规 我追踪到这个问题 因为我的一些INSERT INTO语句运行了两次 然后我发现有问题的命令之后有一个 C 风格的注释 WHENEVER SQLERROR EXIT FAILURE SET
  • 有没有办法像 withCString 一样链接函数?

    有没有办法链接像这样的函数withCString 我的意思是任何 函数看起来像f Foo gt CFoo gt IO a gt IO a 例如 假设有一个函数cFunc CString gt CFoo gt CBar gt IO 通常 我会
  • 用于确保 shell 脚本在任何给定时间仅运行一个实例的 Shell 片段 [重复]

    这个问题在这里已经有答案了 可能的重复 确保一次只运行一个 shell 脚本实例的快速而肮脏的方法 https stackoverflow com questions 185451 quick and dirty way to ensure
  • 每秒写入文件数

    我想将访问率较高的网站的访问记录下来并存档 每秒可以对日志文件执行多少写入 如果您无法使用 Analytics 为什么不使用网络服务器现有的日志系统呢 如果您使用的是真正的网络服务器 那么它几乎肯定是一种已经针对最大吞吐量进行了优化的日志记
  • CollisionBitMask 如何工作? Swift/SpriteKit

    据我所知 物理体的默认设置是当它们相互碰撞时会相互弹开 直到您将它们的碰撞位掩码设置为相同的数字 然而 由于我相信碰撞位掩码 我在完成看起来应该非常简单的事情时遇到了一个巨大的问题 let RedBallCategory UInt32 0x
  • 订阅主题的 Angular HTTP 调用关闭主题

    我有两个可以获取给定对象的服务 用于获取完整列表的初始 HTTP 调用 以及用于实时更新新元素的 Websocket 通知 我想将这两个调用连接到同一个可观察对象 以便显示页面不了解后端 有这样的电话 private getInitialD
  • UIWebView:禁用富文本编辑器的复制/剪切选项

    我有一个带有 contentEditable div 的 UIWebView 来实现某种富文本编辑器 一旦用户选择任何文本片段 我需要修剪 UIMenuController 中出现在 Web 视图中的复制和剪切选项 网络上似乎有很多解决方案
  • hive 0.14 更新和删除查询配置错误

    在阿帕奇中hive 0 14我们可以通过支持更新和删除查询ACID配置 hive configuration hive support concurrency true hive enforce bucketing true hive ex
  • 在Qt中获取本地IP地址

    有没有跨平台的方法来获取本地IP地址 即看起来像192 168 1 49 使用Qt的计算机 我想为 Symbian 手机创建一个 FTP 服务器 并且想显示 FTP 客户端应连接的 IP 地址 Use QNetworkInterface a
  • 如何追加多个文本文件并将每个文件名放入 pandas 的新列中?

    我有很多 txt文件夹中的文件 每个文件具有相同的结构 每个文件中的四列相同 但行数不同 1 txt 0 00781238 0 00082577 0 00781238 0 03314453 0 01562476 0 00064219 0 0
  • opencv - 使用特征检测进行对象跟踪

    我想跟踪视频中的一个对象 例如 移动的球 参考opencv教程 Features2D Homography来查找已知对象 我已经能够通过提供参考图像来跟踪静态图像中的对象 我计划使用参考图像从输入视频的第一帧中检测移动物体 对于下一帧 在前
  • SQL 约束检查值是否不存在于另一个表中

    在我的 PostgreSQL 中9 4数据库 我有一个表fields有一个柱子name具有独特的价值观 我正在创建一个新表fields new具有类似的结构 这里不重要 和一个列name以及 我需要一种方法来约束name要插入的值field
  • 如何打开 SwiftUI 应用程序并使用 Siri Intent Extension 中的 NSUseractivity 执行功能?

    我的问题 我的应用程序有自己的使用意图扩展创建的快捷方式操作 他们完美地执行后台操作 对于某些操作 我试图使意图扩展在快捷方式中运行时打开主 容器 应用程序并执行功能 我在使用 NSUserActivity 时遇到了麻烦 我不确定它是一个
  • 用Java编写多线程映射迭代器

    我有一个通用映射迭代器 如下所示 class Mapper
  • 为什么 sys.getrefcount() 返回 2?

    据我了解 sys getrefcount 返回对象的引用数量 在以下情况下 应该 为 1 import sys numpy a numpy array 1 2 3 4 print sys getrefcount a 然而 结果却是2 所以
  • 下载 iOS 时流式传输视频

    我使用的是 iOS 7 我有一个 mp4 视频需要在我的应用程序中下载 该视频很大 约 1 GB 这就是它不包含在应用程序中的原因 我希望用户能够在开始下载后立即开始观看视频 我还希望视频能够缓存在 iOS 设备上 这样用户以后就不需要再次
  • 如何将日志记录添加到带有时间戳的文件到 Raspberry Pi 的 Python TCP 服务器

    我的项目有点陷入困境 我迫切需要帮助 我需要一个简单的 TCP 服务器 python 代码 它具有日志记录和时间戳等功能 我可以将其用于我的 Raspberry Pi 这是我的最后一年项目 我看过一些例子 但由于我在编写自己的脚本 代码方面