Как использовать объект из внешней области видимости в обработчике API Django - PullRequest
0 голосов
/ 22 марта 2020

TL; DR:

Я запускаю сервер Django с соединением TCP-сокета . Мне нужно внедрить экземпляр TCP-соединения в обработчики REST API, чтобы выполнить действия. Я не могу понять, КАК разделить память между Django и другим моим кодом.


Я работаю на сервере REST Django.

В urls.py я определил do_something обработчик API:

urlpatterns = [
    path('admin/', admin.site.urls),
    path('something/', do_something)
]

в manage.py: Для упрощения я использовал name вместо tcp_connection и его лог c.

name = None

@api_view(["GET"])
def do_something(request):
    print("name", name) # prints None. Expected {"value": "lala"}
    return Response(None, status.HTTP_200_OK)

def main():
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'api.settings')

    global name
    name = {
        "value": "lala"
    }
    execute_from_command_line(sys.argv)

if __name__ == '__main__':
    print(f'Initiating')
    main()

Мысли

Поскольку я новичок в python, это может быть глупо. Похоже, что он работает в другом process и, следовательно, нет shared memory. Если это правильно, как я могу ввести object instance, который нужен обработчику?

Спасибо!

...