Artifact 6474dcdd75998abd3a7f4eb287f618f1d947d4dc:
- File
run_client.py
— part of check-in
[300e33d802]
at
2025-03-24 08:25:43
on branch trunk
— initial commit of examples developed with the assistance of a LLVM chatbot
(user:
manghi
0000: 23 21 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20 70 #!/usr/bin/env p
0010: 79 74 68 6f 6e 33 0a 23 20 2d 2a 2d 20 63 6f 64 ython3.# -*- cod
0020: 69 6e 67 3a 20 75 74 66 2d 38 20 2d 2a 2d 0a 22 ing: utf-8 -*-."
0030: 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d "".=============
0040: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0050: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0060: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0070: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0080: 3d 0a 53 63 72 69 70 74 20 4e 61 6d 65 3a 20 20 =.Script Name:
0090: 20 20 20 72 75 6e 5f 63 6c 69 65 6e 74 2e 70 79 run_client.py
00a0: 0a 41 75 74 68 6f 72 3a 20 20 20 20 20 20 20 20 .Author:
00b0: 20 20 4d 61 73 73 69 6d 6f 20 4d 61 6e 67 68 69 Massimo Manghi
00c0: 0a 44 61 74 65 3a 20 20 20 20 20 20 20 20 20 20 .Date:
00d0: 20 20 32 30 32 35 2d 30 33 2d 32 33 0a 44 65 73 2025-03-23.Des
00e0: 63 72 69 70 74 69 6f 6e 3a 20 20 20 20 20 0a 20 cription: .
00f0: 20 20 20 42 72 69 65 66 6c 79 20 64 65 73 63 72 Briefly descr
0100: 69 62 65 20 77 68 61 74 20 74 68 69 73 20 73 63 ibe what this sc
0110: 72 69 70 74 20 64 6f 65 73 2e 0a 0a 55 73 61 67 ript does...Usag
0120: 65 3a 0a 20 20 20 20 70 79 74 68 6f 6e 20 73 63 e:. python sc
0130: 72 69 70 74 5f 6e 61 6d 65 2e 70 79 20 5b 6f 70 ript_name.py [op
0140: 74 69 6f 6e 73 5d 0a 0a 44 65 70 65 6e 64 65 6e tions]..Dependen
0150: 63 69 65 73 3a 0a 20 20 20 20 4c 69 73 74 20 61 cies:. List a
0160: 6e 79 20 65 78 74 65 72 6e 61 6c 20 64 65 70 65 ny external depe
0170: 6e 64 65 6e 63 69 65 73 20 28 65 2e 67 2e 2c 20 ndencies (e.g.,
0180: 72 65 71 75 69 72 65 64 20 6c 69 62 72 61 72 69 required librari
0190: 65 73 29 2e 0a 20 20 20 20 0a 4e 6f 74 65 73 3a es).. .Notes:
01a0: 0a 20 20 20 20 41 6e 79 20 69 6d 70 6f 72 74 61 . Any importa
01b0: 6e 74 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f nt implementatio
01c0: 6e 20 6e 6f 74 65 73 20 6f 72 20 61 73 73 75 6d n notes or assum
01d0: 70 74 69 6f 6e 73 2e 0a 3d 3d 3d 3d 3d 3d 3d 3d ptions..========
01e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
01f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0200: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0210: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0220: 3d 3d 3d 3d 3d 3d 0a 22 22 22 0a 0a 69 6d 70 6f ======."""..impo
0230: 72 74 20 61 72 67 70 61 72 73 65 0a 69 6d 70 6f rt argparse.impo
0240: 72 74 20 6c 6f 67 67 69 6e 67 0a 69 6d 70 6f 72 rt logging.impor
0250: 74 20 73 79 73 0a 69 6d 70 6f 72 74 20 61 73 79 t sys.import asy
0260: 6e 63 69 6f 0a 69 6d 70 6f 72 74 20 63 6c 69 65 ncio.import clie
0270: 6e 74 0a 0a 23 20 43 6f 6e 66 69 67 75 72 65 20 nt..# Configure
0280: 6c 6f 67 67 69 6e 67 0a 6c 6f 67 67 69 6e 67 2e logging.logging.
0290: 62 61 73 69 63 43 6f 6e 66 69 67 28 0a 20 20 20 basicConfig(.
02a0: 20 6c 65 76 65 6c 3d 6c 6f 67 67 69 6e 67 2e 49 level=logging.I
02b0: 4e 46 4f 2c 0a 20 20 20 20 66 6f 72 6d 61 74 3d NFO,. format=
02c0: 22 25 28 61 73 63 74 69 6d 65 29 73 20 2d 20 25 "%(asctime)s - %
02d0: 28 6c 65 76 65 6c 6e 61 6d 65 29 73 20 2d 20 25 (levelname)s - %
02e0: 28 6d 65 73 73 61 67 65 29 73 22 2c 0a 29 0a 0a (message)s",.)..
02f0: 64 65 66 20 70 61 72 73 65 5f 61 72 67 75 6d 65 def parse_argume
0300: 6e 74 73 28 29 3a 0a 20 20 20 20 22 22 22 50 61 nts():. """Pa
0310: 72 73 65 20 63 6f 6d 6d 61 6e 64 2d 6c 69 6e 65 rse command-line
0320: 20 61 72 67 75 6d 65 6e 74 73 2e 22 22 22 0a 20 arguments.""".
0330: 20 20 20 70 61 72 73 65 72 20 3d 20 61 72 67 70 parser = argp
0340: 61 72 73 65 2e 41 72 67 75 6d 65 6e 74 50 61 72 arse.ArgumentPar
0350: 73 65 72 28 64 65 73 63 72 69 70 74 69 6f 6e 3d ser(description=
0360: 22 42 72 69 65 66 20 73 63 72 69 70 74 20 64 65 "Brief script de
0370: 73 63 72 69 70 74 69 6f 6e 22 29 0a 20 20 20 20 scription").
0380: 23 20 45 78 61 6d 70 6c 65 20 61 72 67 75 6d 65 # Example argume
0390: 6e 74 3a 20 70 61 72 73 65 72 2e 61 64 64 5f 61 nt: parser.add_a
03a0: 72 67 75 6d 65 6e 74 28 22 2d 66 22 2c 20 22 2d rgument("-f", "-
03b0: 2d 66 69 6c 65 22 2c 20 68 65 6c 70 3d 22 49 6e -file", help="In
03c0: 70 75 74 20 66 69 6c 65 20 70 61 74 68 22 29 0a put file path").
03d0: 20 20 20 20 72 65 74 75 72 6e 20 70 61 72 73 65 return parse
03e0: 72 2e 70 61 72 73 65 5f 61 72 67 73 28 29 0a 0a r.parse_args()..
03f0: 61 73 79 6e 63 20 64 65 66 20 74 65 73 74 5f 63 async def test_c
0400: 6f 6e 6e 65 63 74 69 6f 6e 28 29 3a 0a 20 20 20 onnection():.
0410: 20 73 6f 63 6b 65 74 5f 63 6c 69 65 6e 74 20 3d socket_client =
0420: 20 63 6c 69 65 6e 74 2e 41 73 79 6e 63 55 6e 69 client.AsyncUni
0430: 78 53 6f 63 6b 65 74 43 6c 69 65 6e 74 28 22 2f xSocketClient("/
0440: 74 6d 70 2f 73 6e 69 67 2e 73 6f 63 6b 65 74 22 tmp/snig.socket"
0450: 29 0a 20 20 20 20 61 77 61 69 74 20 73 6f 63 6b ). await sock
0460: 65 74 5f 63 6c 69 65 6e 74 2e 63 6f 6e 6e 65 63 et_client.connec
0470: 74 28 29 20 20 23 20 e2 9c 85 20 45 6e 73 75 72 t() # ... Ensur
0480: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 70 e connection hap
0490: 70 65 6e 73 0a 0a 64 65 66 20 6d 61 69 6e 28 29 pens..def main()
04a0: 3a 0a 20 20 20 20 22 22 22 4d 61 69 6e 20 65 78 :. """Main ex
04b0: 65 63 75 74 69 6f 6e 20 66 75 6e 63 74 69 6f 6e ecution function
04c0: 2e 22 22 22 0a 20 20 20 20 61 72 67 73 20 3d 20 .""". args =
04d0: 70 61 72 73 65 5f 61 72 67 75 6d 65 6e 74 73 28 parse_arguments(
04e0: 29 0a 20 20 20 20 6c 6f 67 67 69 6e 67 2e 69 6e ). logging.in
04f0: 66 6f 28 22 53 63 72 69 70 74 20 73 74 61 72 74 fo("Script start
0500: 65 64 2e 22 29 0a 20 20 20 20 0a 20 20 20 20 23 ed."). . #
0510: 20 41 64 64 20 73 63 72 69 70 74 20 6c 6f 67 69 Add script logi
0520: 63 20 68 65 72 65 0a 0a 0a 20 20 20 20 61 73 79 c here... asy
0530: 6e 63 69 6f 2e 72 75 6e 28 74 65 73 74 5f 63 6f ncio.run(test_co
0540: 6e 6e 65 63 74 69 6f 6e 28 29 29 20 20 23 20 e2 nnection()) # .
0550: 9c 85 20 52 75 6e 20 74 68 65 20 61 73 79 6e 63 .. Run the async
0560: 20 66 75 6e 63 74 69 6f 6e 0a 0a 20 20 20 20 6c function.. l
0570: 6f 67 67 69 6e 67 2e 69 6e 66 6f 28 22 53 63 72 ogging.info("Scr
0580: 69 70 74 20 63 6f 6d 70 6c 65 74 65 64 20 73 75 ipt completed su
0590: 63 63 65 73 73 66 75 6c 6c 79 2e 22 29 0a 0a 69 ccessfully.")..i
05a0: 66 20 5f 5f 6e 61 6d 65 5f 5f 20 3d 3d 20 22 5f f __name__ == "_
05b0: 5f 6d 61 69 6e 5f 5f 22 3a 0a 20 20 20 20 74 72 _main__":. tr
05c0: 79 3a 0a 20 20 20 20 20 20 20 20 6d 61 69 6e 28 y:. main(
05d0: 29 0a 20 20 20 20 65 78 63 65 70 74 20 45 78 63 ). except Exc
05e0: 65 70 74 69 6f 6e 20 61 73 20 65 3a 0a 20 20 20 eption as e:.
05f0: 20 20 20 20 20 6c 6f 67 67 69 6e 67 2e 65 72 72 logging.err
0600: 6f 72 28 66 22 41 6e 20 65 72 72 6f 72 20 6f 63 or(f"An error oc
0610: 63 75 72 72 65 64 3a 20 7b 65 7d 22 2c 20 65 78 curred: {e}", ex
0620: 63 5f 69 6e 66 6f 3d 54 72 75 65 29 0a 20 20 20 c_info=True).
0630: 20 20 20 20 20 73 79 73 2e 65 78 69 74 28 31 29 sys.exit(1)
0640: 0a 0a ..