Files
lume/libs/python/computer-server/examples/usage_example.py

77 lines
2.0 KiB
Python

#!/usr/bin/env python3
"""
Example showing how to use the CUA Computer API as an imported package.
"""
import asyncio
import logging
from typing import TYPE_CHECKING
# For type checking only
if TYPE_CHECKING:
from computer_api import Server
# Setup logging
logging.basicConfig(
level=logging.INFO, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s"
)
logger = logging.getLogger(__name__)
# Example 1: Synchronous usage (blocks until server is stopped)
def example_sync():
"""
Example of synchronous server usage. This will block until interrupted.
Run with: python3 -m examples.usage_example sync
"""
# Import directly to avoid any confusion
from computer_api.server import Server
server = Server(port=8080)
print("Server started at http://localhost:8080")
print("Press Ctrl+C to stop the server")
try:
server.start() # This will block until the server is stopped
except KeyboardInterrupt:
print("Server stopped by user")
# Example 2: Asynchronous usage
async def example_async():
"""
Example of asynchronous server usage. This will start the server in the background
and allow other operations to run concurrently.
Run with: python3 -m examples.usage_example async
"""
# Import directly to avoid any confusion
from computer_api.server import Server
server = Server(port=8080)
# Start the server in the background
await server.start_async()
print("Server is running in the background")
print("Performing other tasks...")
# Do other things while the server is running
for i in range(5):
print(f"Doing work iteration {i+1}/5...")
await asyncio.sleep(2)
print("Work complete, stopping server...")
# Stop the server when done
await server.stop()
print("Server stopped")
if __name__ == "__main__":
import sys
if len(sys.argv) > 1 and sys.argv[1] == "async":
asyncio.run(example_async())
else:
example_sync()