You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I try to make a modbus server in a python thread but I don't know how to stop it.
I took the exact code I found in the example part of documentation.
I set up my app ("get_server(TCPServer, self.interface, RequestHandler)") and I ran this code inside my thread:
Everything works fine except I have to stop my program manually because my thread never stop.
The question is: how to stop the "app.serve_forever()" part when I don't need my server anymore?
Just in case, I created an event called "stop_event" which can be set whenever I want to.
But I don't really know how to use it to force the server to stop.
Here is an example adapted from scripts/examples/simple_tcp_server.py (you will need python >= 3.6):
importtimefromsocketserverimportTCPServerfromcollectionsimportdefaultdictfromthreadingimportThreadfromumodbusimportconffromumodbus.server.tcpimportRequestHandler, get_server# A very simple data store which maps addresses against their values.data_store=defaultdict(int)
TCPServer.allow_reuse_address=Trueapp=get_server(TCPServer, ("", 5020), RequestHandler)
@app.route(slave_ids=[1], function_codes=[1, 2], addresses=list(range(0, 10)))defread_data_store(slave_id, function_code, address):
"""" Return value of address. """returndata_store[address]
@app.route(slave_ids=[1], function_codes=[5, 15], addresses=list(range(0, 10)))defwrite_data_store(slave_id, function_code, address, value):
"""" Set value for address. """data_store[address] =valuedefserve():
withapp:
app.serve_forever()
defmain():
server=Thread(target=serve)
server.start()
try:
# whatever main loop you decide to runwhileTrue:
time.sleep(1)
finally:
app.shutdown()
server.join()
if__name__=="__main__":
main()
I'm not sure if this is what you're looking for but if you press Ctrl-C it should stop the server running on the other thread.
Activity
[-]How to stop server from exemple code?[/-][+]How to stop server from example code?[/+]grgmm commentedon Dec 2, 2022
Hi, I have the same issue, please somebody can help us?
tiagocoutinho commentedon Dec 4, 2022
Here is an example adapted from
scripts/examples/simple_tcp_server.py(you will need python >= 3.6):I'm not sure if this is what you're looking for but if you press Ctrl-C it should stop the server running on the other thread.