Ga naar inhoud
Log in om dit te volgen  
aarclay

Content van Python doorsturen

Aanbevolen berichten

Zijn er mensen hier die bekend zijn met Python?

Hopelijk is dit geen complex verhaal wat ik jullie ga vertellen, maar het is een redelijk simpele vraag voor een doorgewinterde Pythoner. smiley

Ik heb dus een mooi Python-script wat via ZeroMQ een datastroom binnenhaalt (treinposities), en dat werkt perfect, en ik krijg om de tien seconden een mooie XML-feed binnen.
Codeblok:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/usr/bin/env python2
from gzip import GzipFile
from cStringIO import StringIO
from subprocess import call
import zmq

context = zmq.Context()

subscriber = context.socket(zmq.XSUB)
subscriber.connect("tcp://pubsub.*******.nl:7664")
subscriber.send(chr(0x01) + "/RIG/NStreinpositiesInterface5") # 0x01 = subscribe, 0x00 = unsubscribe


x=0

while True:

        multipart = subscriber.recv_multipart()
        address = multipart[0]
        contents = .join(multipart[1:])
        contents = GzipFile(,r,0,StringIO(contents)).read()
        filename="tmp/treinpos.txt"
        file = open(filename,"w")
        file.write(contents)
        file.close()

subscriber.close()
context.term()


Nu wordt er dus constant contents dus gebruikt om dit naar een bestand te schrijven, voor nu. Hoe kan ik dit in het geheugen opslaan, zodat ik dit met een de PyBottle-plugin kan outputten?

En klopt het dat dit uiteraard minder belastend is voor de server?

Hopelijk zijn er hier mensen die Python-kennis hebben, en snappen wat ik bedoel.

Deel dit bericht


Link naar bericht
Delen op andere sites
Op welke manier wil je deze dan uitlezen? Is het niet handiger om, als er iets binnen komt, een request op jou PHP applicatie aan te roepen? (althans, daar ga ik vanuit) en niet andersom?

Deel dit bericht


Link naar bericht
Delen op andere sites
Welke PHP-applicatie? De XML wordt uiteindelijk wel door PHP uitgelezen, maar dat is een bijzaak.
Het punt is dat ik eerst gewoon de XML wil outputten.
(Dit draait op een andere server)

Het gaat er om dat ik dus content heb, waar met een interval van elke tien seconden een nieuwe XML in staat. Deze wil ik dus outputten naar PyBottle ofzo. Kan ik dit niet steeds naar het geheugen schrijven, i.p.v. constant naar een tekstbestand schrijven?

Deel dit bericht


Link naar bericht
Delen op andere sites
Ik denk dat je op een site waar wat meer python programmeurs zitten meer reacties krijgt ja smiley

Deel dit bericht


Link naar bericht
Delen op andere sites
Kun je niet vanuit het script hierboven het gewoon printen en dan met een ander programma opvangen? Is vanuit Linux mogelijk iig.

Deel dit bericht


Link naar bericht
Delen op andere sites
Je bedoelt dat ik de variabele gebruik in PyBottle bijvoorbeeld?

Codeblok:
1
2
3
4
5
6
7
8
# dit bovenaan
from bottle import route, run, template

@route(/vt/)
def index(name):
    return template(content)

run(host=localhost, port=8080)


En dat dus op de plek van die while?
Maar dan maakt hij steeds nieuw een instance aan van de PyBottle?

Of bedoel je dat ik dit buiten de while moet zetten?

Deel dit bericht


Link naar bericht
Delen op andere sites
Iemand? smiley
Ik kan het wel proberen, maar ik heb geen zin om op een semi-productie server een load te veroorzaken doordat het niet klopt.

Deel dit bericht


Link naar bericht
Delen op andere sites
Wat houd je trouwens tegen om dit in PHP te maken? Ik zie dat het om ZeroMQ gaat en PHP heeft ook een mooie 0MQ libary, als ik even in de documentatie lees. En volgensmij ken je PHP beter dan Python :-).

Daarnaast ging ik er in mijn eerste reactie vanuit dat het de bedoeling was dat je uiteindelijk de URL zelf zou aanroepen vanuit een PHP applicatie. Hierdoor dacht ik dat je het beter andersom kan doen:
``Python (als er nieuwe data is) => HTTP => PHP``
Ipv wat je nu wilt:
`PHP (als hij data wilt) => HTTP => Python.`

Deel dit bericht


Link naar bericht
Delen op andere sites
Die discussie wordt ik eigenlijk een beetje zat smiley
Het moet gewoon in Python kunnen, en verder wil ik toch wel wat meer dan enkel PHP kunnen, omdat Python ook erg krachtig is. (Krachtiger dan PHP zelfs volgens mij)

Verder heb ik ook geen zin om PHP op mijn tweede server te installeren smiley. (extra onnodige resources)

Dus laten we het nu op Python richten, i.p.v. een andere programmeertaal. smiley

Ik zal eens kijken of memcached iets kan doen.

Deel dit bericht


Link naar bericht
Delen op andere sites
Gast
Ipv memcached zou in redis gaan gebruiken. Die ondersteunt wat leukere technieken en is ook up to date smiley.
Of dit minder belastend is zou ik niet durven zeggen zonder te testen.

Deel dit bericht


Link naar bericht
Delen op andere sites

Maak een account aan of log in om te reageren

Je moet lid zijn om een reactie te kunnen achterlaten

Account aanmaken

Maak een account aan in onze gemeenschap. Het is makkelijk!

Registreer een nieuw account

Aanmelden

Ben je al lid? Meld je hier aan.

Nu aanmelden
Log in om dit te volgen  

×