Каким образом внешние баночки не будут работать в моей управляемой банке? [Дубликат]

Вы не можете использовать глобальные переменные для хранения таких данных. Это не только безопасный поток, это не процесс безопасен, а WSGI-серверы на производстве порождают множество процессов. Мало того, что ваши подсчеты были бы неправильными, если бы вы использовали потоки для обработки запросов, они также будут меняться в зависимости от того, какой процесс обрабатывал запрос.

Используйте источник данных за пределами флажка для хранения глобальных данных. База данных, memcached или redis - все соответствующие области хранения, в зависимости от ваших потребностей. Если вам нужно загрузить и получить доступ к данным Python, рассмотрите multiprocessing.Manager . Вы также можете использовать сеанс для простых данных, предназначенных для каждого пользователя.


Сервер разработки - это единственный поток, по умолчанию один процесс. Вы не увидите поведение, которое вы описываете, поскольку каждый запрос будет обрабатываться синхронно. Включите потоки или процессы, и вы увидите это. app.run(threaded=True) или app.run(processes=10).


Некоторые серверы WSGI могут поддерживать gevent или другого асинхронного рабочего. Глобальные переменные по-прежнему не являются потокобезопасными, поскольку по-прежнему нет защиты от большинства условий гонки. У вас все еще может быть сценарий, когда один работник получает значение, дает, другой его модифицирует, дает, то первый работник также модифицирует его.

77
задан compuhosny 5 April 2016 в 17:55
поделиться

8 ответов

Когда вы экспортируете проект как «Runnable jar» (правая мышь в проекте -> Export -> Runnable jar), вы можете упаковать все зависимости в сгенерированную банку. Он также имеет два других способа (см. Скриншот) для экспорта ваших библиотек, помните о лицензиях при выборе способа упаковки, который вы будете использовать.

Package libraries [/g2]

Выпадающее меню «Пуск» заполняется классами, содержащими метод main(String[]). Выбранный класс запускается, когда вы запускаете jar.

Экспорт в качестве исполняемой банки использует зависимости в вашем пути сборки (правая кнопка мыши в проекте -> путь сборки -> настройка пути сборки ...) , Когда вы экспортируете как «регулярную» (не исполняемую) банку, вы можете выбрать любой файл в своих проектах. Если у вас есть библиотеки в папке проекта, вы можете включить их, но внешние зависимости, например , не могут быть включены (для проектов maven, поиск здесь ).

122
ответ дан Joost 3 September 2018 в 17:32
поделиться

Вы можете использовать Export-> Java-> Runnable Jar, чтобы создать банку, которая включает в себя ее зависимости

. Кроме того, вы можете использовать плагин fatjar eclipse, а также для объединения сосуды вместе

8
ответ дан Attila 3 September 2018 в 17:32
поделиться

Экспортируя источник в банку, убедитесь, что вы выбрали опцию runnable jar из опций. Затем выберите, хотите ли вы упаковать все банки зависимостей или просто включить их непосредственно в файл jar. Это зависит от проекта, над которым вы работаете.

Затем вы запускаете банку непосредственно java -jar example.jar.

0
ответ дан Charan Raj 3 September 2018 в 17:32
поделиться

Если это автономный (Основной метод) java-проект, то ни один конкретный путь не помещает все банки внутри проекта не в какой-либо конкретный путь, а затем щелкните правой кнопкой мыши по проекту -> export -> Runnable jar -> Выберите конфигурацию обеда и обработкой библиотеки, затем выберите параметр переключателя «Необходимые библиотеки пакетов в сгенерированную банку» -> «Готово».

Или

Если у вас есть веб-проект, тогда поместите все банки в сеть -inf / lib и выполните тот же шаг.

0
ответ дан JitenS 3 September 2018 в 17:32
поделиться

Вы можете щелкнуть правой кнопкой мыши по проекту, нажать на экспорт, набрать «jar», выбрать «Runnable JAR File Export». Там у вас есть опция «Извлечь необходимые библиотеки в сгенерированный JAR».

5
ответ дан maerch 3 September 2018 в 17:32
поделиться

Если вы хотите экспортировать все JAR-файлы веб-проекта Java, откройте последний созданный WAR-файл с помощью ZIP-инструмента (например, 7-Zip), перейдите в папку / WEB-INF / lib /. Здесь вы найдете все JAR-файлы, которые вам нужны для этого проекта (как указано в «Связанные библиотеки»).

2
ответ дан Peter Saitz 3 September 2018 в 17:32
поделиться

Чтобы создать файл jar в eclipse, щелкните правой кнопкой мыши проект, для которого вы хотите сгенерировать, выберите «Экспорт»> «Java»> «Runnable Jar File»,

Создает банку, которая включает все зависимости от Pom.xml, но, пожалуйста, убедитесь, что проблема с лицензией, если вы используете стороннюю зависимость для вашего приложения.

1
ответ дан Rohit 3 September 2018 в 17:32
поделиться

Лично

Ни один из вышеперечисленных ответов не работал для меня, я все равно продолжал получать ошибки NoClassDefFound (я использую Maven для зависимостей). Мое решение заключалось в создании с использованием «mvn clean install» и использовании «[project] -jar-with-dependencies.jar», созданного этой командой. Аналогично в Eclipse вы можете щелкнуть правой кнопкой мыши проект -> Run As -> Maven Install, и он поместит банки в целевую папку.

3
ответ дан SMKS 3 September 2018 в 17:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: