Python Websocket - 具有时间和消息限制

标签 python websocket argparse

我正在从 websocket (ws://localhost:8080) 获取数据并用它来执行命令行参数。下面提到的代码..

python datapy.py -i 127.0.0.1 -p 8080

from websocket import create_connection
#import ConfigParser
#from test import settings
import sys
import argparse
import socket 

parser = argparse.ArgumentParser()
parser.add_argument('-i', dest='ip' , help='host name / IP')
parser.add_argument('-p', dest='port' , type=int, help='port')
parser.add_argument('-t', dest='time' , type=int, help='Time (in seconds) to keep reading data from websocket. After this process will be exit. Default value is 0. For 0 it will run infinitely')
parser.add_argument('-m', dest='msg' , type=int, help='Number of message. Process will exit after receiving Number of messages. Default is 0, means runs for ever.')
args = parser.parse_args()
print(args.ip)

#ws://%s:%s" % (args.ip,args.port)
url = "ws://%s:%s" % (args.ip,args.port)
ws = create_connection(url)
print "Receiving data from the socket..."
for each in ws:
    result =  ws.recv();
    print "Received '%s'" % result
ws.close();

控制台:

C:\Users\556718\Desktop\pythonprac>python datapy.py -i 127.0.0.1 -p 8080
127.0.0.1
Receiving data from the socket...
Received 'sound'
Received 'eokeoe'
Received 'mdmmd'
Received 'ssss'
Received 'tttt'

正如argparse中提到的,我想传递-m和-t - 就像

python data.py -i 127.0.0.1 -p 8080 -m 5 --> It will limit to only 5 messages in the console.. 
python data.py -i 127.0.0.1 -p 8080 -t 120 --> Send me the messages until 120 seconds - after that exit .... 
python data.py -i 127.0.0.1 -p 8080 -m 5 -t 120 --> for limiting to 120 seconds (2 minutes) and 5 messages - either of the condition  

任何人都可以帮我吗

最佳答案

我无法测试,但按照这些思路应该可以工作。

from websocket import create_connection
#import ConfigParser
#from test import settings
import sys
import argparse
import socket 
import time

parser = argparse.ArgumentParser()
parser.add_argument('-i', dest='ip' , help='host name / IP')
parser.add_argument('-p', dest='port' , type=int, help='port')
parser.add_argument('-t', dest='time' , type=int, help='Time (in seconds) to keep reading data from websocket. After this process will be exit. Default value is 0. For 0 it will run infinitely')
parser.add_argument('-m', dest='msg' , type=int, help='Number of message. Process will exit after receiving Number of messages. Default is 0, means runs for ever.')
args = parser.parse_args()
print(args.ip)

#ws://%s:%s" % (args.ip,args.port)
url = "ws://%s:%s" % (args.ip,args.port)
ws = create_connection(url)
print "Receiving data from the socket..."
tstart = time.time()
nbmsg = 0
for each in ws:
    result =  ws.recv();
    nbmsg += 1
    if args.time is not None:
        if time.time() > tstart + args.time:
            print('Time limit reached.')
            sys.exit()
    if args.msg is not None and nbmsg >= args.msg:
        print('Message limit reached')
        sys.exit()
    print "Received '%s'" % result
ws.close();

关于Python Websocket - 具有时间和消息限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39117226/

相关文章:

python - 在 Python 内部如何将列表追加到自身?

python - 相对于没有重复列的列转置数据框

无法查看recv返回的特定字符

javascript - SockJS 对 WebSocket 使用无效 URL

python argparse store --foo=bar as args.key ='foo' , args.value ='bar'

python - "Message Must be multiple of 16"使用 Python 通过网络加密音频

python - 为 Pandas DataFrame 的图形设置 x 轴间隔(刻度)

session - 使用 SSL session 缓存对于 websocket 服务器来说是个坏主意吗?

python - argparse add_argument 来自字典

Python argparse - 如果没有给出参数,则默认互斥组