[server] add server stub and command line clients

This commit is contained in:
Jan Grewe 2020-08-07 18:48:47 +02:00
parent 3a09e301c0
commit 589286fad1
11 changed files with 68 additions and 38 deletions

View File

@ -13,8 +13,10 @@ markdown_extensions:
nav: nav:
- Home: 'index.md' - Home: 'index.md'
- 'User Guide': - User Guide:
- 'configuration': 'configuration.md' - 'Configuration': 'configuration.md'
- 'getting started': 'getting_started.md' - Introduction:
- 'todos': 'todos.md' - getting started: 'getting_started.md'
- database: 'database_layout.md'
- TODOs: 'todos.md'
- API reference: 'api/index.html' - API reference: 'api/index.html'

View File

@ -1,4 +1,4 @@
#!/bin/python3 #!/usr/bin/python3
import argparse import argparse
import glob import glob
import os import os

View File

@ -1,13 +1,10 @@
#!/usr/bin/env python3
import sys import sys
import socket import socket
import selectors import selectors
import traceback import traceback
import libclient import fishbook_server.libclient as libclient
from IPython import embed
sel = selectors.DefaultSelector() sel = selectors.DefaultSelector()
@ -70,17 +67,7 @@ def send_request(host, port, request):
return message.payload if message else "no response" return message.payload if message else "no response"
def main(): def run(host, port, action="search", value="test"):
if len(sys.argv) != 5:
print("usage:", sys.argv[0], "<host> <port> <action> <value>")
sys.exit(1)
host, port = sys.argv[1], int(sys.argv[2])
action, value = sys.argv[3], sys.argv[4]
request = create_request(action, value) request = create_request(action, value)
response = send_request(host, port, request) response = send_request(host, port, request)
print(response.shape) print(response)
if __name__ == "__main__":
main()

View File

@ -0,0 +1,26 @@
#!/usr/bin/env python3
import sys
import argparse
import fishbook_server.server as server
def run(arguments):
server.runserver(arguments.host, arguments.port)
def create_parser():
parser = argparse.ArgumentParser(description="Run fishbook dataserver")
parser.add_argument("-hs", "--host", type=str, default="", help="The host for which to listen. Use 127.0.0.1 for localhost or any other hosts simply leave it empty.")
parser.add_argument("-pr", "--port", type=int, default=65432, help="The port on which the server should be listening which to listen. Default 9000.")
return parser
def main():
parser = create_parser()
args = parser.parse_args()
run(args)
if __name__ == "__main__":
main()

View File

@ -0,0 +1,27 @@
#!/usr/bin/env python3
import sys
import argparse
import fishbook_server.client as client
def run(arguments):
client.run(arguments.host, arguments.port, arguments.action, arguments.value)
def create_parser():
parser = argparse.ArgumentParser(description="Run fishbook dataserver")
parser.add_argument("-hs", "--host", type=str, default="", help="The host for which to listen. Use 127.0.0.1 for localhost or any other hosts simply leave it empty.")
parser.add_argument("-pr", "--port", type=int, default=65432, help="The port on which the server should be listening which to listen. Default 9000.")
parser.add_argument("-a", "--action", type=str, default="search", help="")
parser.add_argument("-v", "--value", type=str, default="test", help="")
return parser
def main():
parser = create_parser()
args = parser.parse_args()
run(args)
if __name__ == "__main__":
main()

View File

@ -1,29 +1,21 @@
#!/usr/bin/env python3
import sys import sys
import socket import socket
import selectors import selectors
import traceback import traceback
import libserver import fishbook_server.libserver as libserver
sel = selectors.DefaultSelector() sel = selectors.DefaultSelector()
def accept_wrapper(sock): def accept_wrapper(sock):
conn, addr = sock.accept() # Should be ready to read conn, addr = sock.accept() # Should be ready to read
print("accepted connection from", addr) # print("accepted connection from", addr)
conn.setblocking(False) conn.setblocking(False)
message = libserver.Message(sel, conn, addr) message = libserver.Message(sel, conn, addr)
sel.register(conn, selectors.EVENT_READ, data=message) sel.register(conn, selectors.EVENT_READ, data=message)
def main(): def runserver(host, port):
if len(sys.argv) != 3:
print("usage:", sys.argv[0], "<host> <port>")
sys.exit(1)
host, port = sys.argv[1], int(sys.argv[2])
lsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) lsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Avoid bind() exception: OSError: [Errno 48] Address already in use # Avoid bind() exception: OSError: [Errno 48] Address already in use
lsock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) lsock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
@ -51,7 +43,3 @@ def main():
print("caught keyboard interrupt, exiting") print("caught keyboard interrupt, exiting")
finally: finally:
sel.close() sel.close()
if __name__ == "__main__":
main()

View File

@ -6,9 +6,9 @@ assert(sys.version_info >= (3, 0))
__version__ = 0.1 __version__ = 0.1
# exec(open('fishbook/version.py').read()) # exec(open('fishbook/version.py').read())
requires = ['datajoint', 'nixio', 'numpy', 'PyYAML', 'scipy', 'tqdm', 'yaml', 'backports-datetime-fromisoformat'] requires = ['datajoint', 'nixio', 'numpy', 'PyYAML', 'scipy', 'tqdm', 'backports-datetime-fromisoformat']
print(find_packages(exclude=['contrib', 'doc', 'tests*', 'site']))
print(find_packages(exclude=['contrib', 'doc', 'tests*']))
setup(name='fishbook', setup(name='fishbook',
version = __version__, version = __version__,
packages = find_packages(exclude=['contrib', 'doc', 'tests*']), packages = find_packages(exclude=['contrib', 'doc', 'tests*']),