Advanced Usage¶
Macro scripting/DSL has been removed and is not supported. It will not be reintroduced.
Printer Sessions¶
Pure3270 provides high-level printer session support for TN3270E printer LU operations:
Synchronous Printer Sessions:
from pure3270 import PrinterSession
with PrinterSession(host="printer-host.example.com", port=23) as session:
# Wait for print jobs
import time
time.sleep(5)
# Get printed output
output = session.get_printer_output()
print("Printer output:", output)
# Check printer status
status = session.get_printer_status()
print(f"Status: 0x{status:02x}")
Asynchronous Printer Sessions:
import asyncio
from pure3270 import AsyncPrinterSession
async def monitor_printer():
async with AsyncPrinterSession(host="printer-host.example.com") as session:
while True:
await asyncio.sleep(5)
output = await session.get_printer_output()
if output:
print("New print job received:", output)
break
asyncio.run(monitor_printer())
Low-level Printer Support:
For advanced use cases, you can still access the underlying printer buffer:
session = Session()
session.connect("printer-host")
# Handle SCS data streams
printer_status = session.printer_buffer.get_status()
SNA Response Handling¶
Advanced SNA state tracking: .. code-block:: python
- if session.sna_session_state == “NORMAL”:
# Session ready for 3270 data pass
# Note: response.is_negative() not implemented; use exception handling for error recovery # session.reconnect() not implemented; use close() and connect() for recovery
Custom Negotiation¶
Extend negotiation: .. code-block:: python
- class CustomNegotiator(Negotiator):
- async def negotiate_tn3270(self):
# Custom device type negotiation await super().negotiate_tn3270() await self._send_custom_query()
P3270 API Compatibility¶
Pure3270 implements a superset of the p3270 library API natively:
from pure3270 import P3270Client
# Drop-in replacement for p3270.P3270Client
session = P3270Client(hostName='host', hostPort=23)
session.connect()
session.sendEnter()
print(session.getScreen())
session.close()
# For existing code, simply change the import:
# from pure3270 import P3270Client as p3270
Performance Optimization¶
Use buffer pools for large data streams
Batch AID submissions
Memory limits via RLIMIT_AS for resource-constrained environments