Ich habe hier viele Dinge ausprobiert, aber etwas festgefahren.
Ich habe zwei Python-Dateien.
----------------------------------
# file_one.py
from file_two import add_value
# Generate some value and pass it over to file_two by calling the function add_value
print add_value("somevalue")
----------------------------------
#file_two.py
myDictionary = {}
def add_value(payload):
global myDictionary
# Insert payload with a timestamp in to myDictionary
myDictionary[payload] = "{:%Y-%m-%d %H:%M:%S}".format(datetime.now())
return myDictionary
def some_other_function():
print myDictionary
Wenn ich das Wörterbuch in file_two drucke.Mit einer anderen Funktion bekomme ich nur {}. Ich habe alle möglichen verschiedenen Methoden ausprobiert, um das Wörterbuch einzurichten und nicht global usw. zu verwenden, aber ich kann keine Informationen in file_two herausfinden.
file_one funktioniert einwandfrei und druckt das myDictionary mit den korrekten Werten.
Ich nehme an, meine Frage besteht aus zwei Teilen. Wie bekomme ich Zugriff auf das Wörterbuch in file_two und wo werden die Daten gespeichert, wenn nicht in file_two!
Vielen Dank
Bearbeiten 1
Etwas hintergrund file_two ist eine Django-Ansicht.py also some_other_function ist eine Browseranfrage. Die Idee ist, ich werde die Informationen aus dem Wörterbuch an den Browser übergeben, um sie zusammen mit Datenbankinformationen anzuzeigen.
Könnte das das Problem sein? Etwas mit dem Django-Paket zu tun?
Ich drucke eigentlich nichts. Meistens logger.info ......
Bearbeiten 2
Ich habe dieses Problem gelöst, indem ich eine SQLite-Datenbank in verwendet habeOrdner / dev / shm stattdessen. Dies ist ein RAM-Ordner und bleibt nicht nach einem Neustart bestehen, nach dem ich gesucht habe. Eine tatsächliche SQLite-Datenbank ist leicht aus mehreren verschiedenen Python-Skripts zu erstellen.
Antworten:
0 für die Antwort № 1Wie setzt du Django ein? Wenn Sie mehrere Worker haben, können globale Variablen wie myDictionary
darf nicht geteilt werden. Speichern Sie es besser in der Datenbank oder im Cache.