Bitcoin-Wallet ständig mit Python/Django überwachen?

Ich baue eine Website mit Python/Django, auf der Bitcoin im Hintergrund ausgeführt wird. Ich muss ständig alle Adressen in der Brieftasche überprüfen, um eine SQL-Einfügungsanweisung in meine Datenbank einzugeben, wenn eine eingehende Transaktion eingeht, und in bestimmten Fällen möglicherweise Geld aussenden.

Meine Website funktioniert einwandfrei, und ich habe ein Python-Skript geschrieben, das separat ausgeführt wird und eine einfache While-True-Schleife verwendet, um dies zu erreichen. Das Problem ist, wenn das Skript ausgeführt wird, nimmt es zu viel Speicher in Anspruch und die Site läuft ab, wenn ich sie neu lade. Wie kann man dies vermeiden? Ich brauche wirklich einen Hintergrundprozess, der ständig läuft. Ich versuche, Threading im Skript zu verwenden, aber es scheint immer noch zu viel Speicher zu beanspruchen.

Ich habe darüber nachgedacht, Bitcoin mit derselben Brieftasche und dem Skript auf einem separaten Computer auszuführen, aber ich habe gehört, dass dies eine schlechte Idee ist.

Vielen Dank.

Ich habe ein Python-Framework für den Umgang mit solchen Problemen in Kryptowährungen geschrieben: bitbucket.org/miohtama/cryptoassets – es enthält sogar Open-Source-Beispielanwendungen für Django

Antworten (1)

Verwenden Sie die Brieftaschenbenachrichtigung . Sie können es in Ihrer bitcoin.confDatei festlegen und es ein Python- oder Django-Skript aufrufen lassen.

Oder eine andere Lösung wäre, ständig nach neuen Transaktionen abzufragen, obwohl ich dies nicht empfehlen würde.

Danke, das hat enorm geholfen. Genau das, was ich brauchte! Wenn ich walletnotify= python /path/to/script %s aufrufe, übergibt es leider 'sh: 1: <txid> could not find 32512' in sys.argv[1]. Wenn ich es jedoch an ein C++-Programm übergebe, übergibt es nur die txid. So seltsam.
seltsam, aber sollte es nicht sein sys.argv[2]?
Es hieß, das sei außerhalb des Index. Außerdem funktioniert es in C++ gut. Ich weiß nicht, ich werde mehr damit herumspielen und versuchen, es zum Laufen zu bringen. Ich habe keine Anführungszeichen in meinem Befehl -walletnotify.