sys.stdin.readline() - kommisches Problem

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
PNS-Richi
User
Beiträge: 68
Registriert: Donnerstag 17. Januar 2008, 01:48

Hallo,

ich hab mir vor längerem zwei url_redirector/url_rewriter für squid programmiert.
Der neuer macht komische Probleme, also hab ich mir ein mini Python Script geschrieben um heraus zu finden warum dieser solche Probleme macht bzw. was Squid eigentlich so weiter sendet.

Code: Alles auswählen

#! /usr/bin/env python
# -*- coding: utf-8 -*-

import sys

sys.stderr = open("/tmp/squid.stderr","a")

output_file = open("/tmp/squid.test", "a")

while True:

	line = sys.stdin.readline().strip()

	output_file.write("FROM SQUID: " + line + "\n")
		
	tmp = line.split(' ')
		
	if len(tmp) < 2:
		continue

	sys.stdout.write(tmp[0] + " \n")
	sys.stdout.flush()

output_file.close()
In der Log Datei steht nun folgendes:

Code: Alles auswählen

FROM SQUID:
FROM SQUID:
FROM SQUID:
FROM SQUID:
FROM SQUID:
FROM SQUID:
FROM SQUID:
FROM SQUID:
FROM SQUID:
FROM SQUID:
FROM SQUID:
FROM SQUID:
FROM SQUID:
FROM SQUID:
FROM SQUID:
FROM SQUID:
FROM SQUID:
FROM SQUID:
FROM SQUID:
FROM SQUID:
FROM SQUID:
FROM SQUID:
Also bekommt mein Script und die anderen rewriters nur eine Leere Zeile. Hab ich was falsch gemacht mit dem auslesen des stdin, oder passt was mit Squid nicht? Das Problem ist, das das System dann auf 100% ausgelastet ist!

lg Richi
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

ich hab zwar keine ahnung, was squid ist, aber seltsam ist das ja schon.

was passiert wenn du das strip() weglässt? du scheinst ja nur whitespace zu lesen.

du hast squid.stderr explizit an sys.stderr gebunden. gibts evtl auch ein squid.stdout das du binden musst?
http://www.kinderpornos.info
PNS-Richi
User
Beiträge: 68
Registriert: Donnerstag 17. Januar 2008, 01:48

Squid ist eine HTTP Proxy und mithilfe von anderen Programmiersprachen kann man sogenannte "redirectors" schreiben.

Jede anfrage wird an den redirector weiter geleitet, dieser kann dann die url überprüfen, ob diese z.b. eine Porno Seite, oder eine andere nicht gewünschte Seite ist und eine alternative URL zurück liefern.

Squid kennt dabei: url_redirector und url_rewriter.

Bei dem rewriter kann man threads anwenden, als Konzept. Verwende ich den redirector macht es keine Probleme. Ich werd nochmal bei der Squid Seite nach gucken ob man etwas beachten muss, oder ob ein Bug bekannt ist.

lg Richi
Antworten