Возможно ли иметь нескольких рабочих, работающих с Gunicorn, и получить их доступ к некоторой глобальной переменной в упорядоченном порядке, то есть без проблем с условиями гонки?Переменный доступ в пушких с несколькими работниками
ответ
Предполагая, что глобальная переменная означает другой процесс, который хранит их в памяти или на диске, да, я так думаю. Я не проверял исходный код Gunicorn, но на основании проблемы, с которой я столкнулся с каким-то старым кодом, было то, что несколько пользователей получили тот же ключ из старой таблицы MyISAM, увеличив его и создав новую запись, используя уникальный для создания новой записи. В результате иногда (при очень интенсивном движении) создается одна запись (самая новая, перезаписывающая старые, все используют один и тот же инкрементный ключ). Эта проблема никогда не наблюдалась во время обновления аппаратного обеспечения, когда я уменьшал рабочих-пулеметчиков веб-сайта до одного, что было причиной для изучения этой вероятной причины в первую очередь.
Как правило, сокращение рабочих приведет к снижению производительности, и лучше справляться с этими проблемами с транзакциями (если вы используете ACID RDBMS, в отличие от MyISAM). Такая же проблема должна присутствовать в Redis и подобных магазинах.
Также не должно быть проблем с файлами и сокетами, поскольку, насколько мне известно, операционная система блокирует доступ других файлов (даже детей) к открытому файлу.
- 1. Resque с несколькими работниками: какой заказ?
- 2. Программирование ограничений: планирование с несколькими работниками
- 3. Storm: Что происходит с несколькими работниками?
- 4. Доступ к готовым функциям с веб-работниками
- 5. Отдельная задача, обработанная несколькими работниками фонового рисунка?
- 6. Переменный доступ
- 7. переменный доступ
- 8. Как улучшить производительность приложения WPF с несколькими фоновыми работниками
- 9. Delayed_Job обрабатывает тот же тип работы с несколькими работниками?
- 10. jQuery рендеринг с веб-работниками
- 11. Есть ли способ обмена переменными между несколькими работниками в NodeJS?
- 12. Swift: переменный Доступ в ViewController
- 13. переменный доступ в структурах C
- 14. Переменный доступ в нескольких классах
- 15. Переменный доступ в корпусе JSON
- 16. косвенные переменный доступ в С не C++
- 17. Javascript SetTimeout Переменный доступ
- 18. Переменный доступ в пределах объекта
- 19. Переменный доступ в другом классе
- 20. Связь между работниками в uwsgi
- 21. RequireJS Singleton с веб-работниками
- 22. переменный доступ через функцию javascript
- 23. Push-уведомления с сервис-работниками в django
- 24. Проблема с сервисными работниками в получении данных
- 25. CMake: переменный доступ через подкаталоги
- 26. доступ изменяемых переменный в закрывающих событиях
- 27. Изменение общего переменный между несколькими директивами AngularJS
- 28. Доступ к объекту. Переменный в массиве объектов
- 29. Переменный доступ из Form1 в From2
- 30. доступ статические переменный в Symfony 2.2 веточка
ben - что вы узнали? У меня такая же проблема. Я заметил, что вы не отметили это как ответ, но я подумал, как получилось – domoarrigato
Прошло некоторое время, но, насколько я помню, я пришел к выводу, что обмен данными между разными работниками невозможно. Я имею в виду, в конце концов, это просто процессы, поэтому есть способы обмена данными, но это не так. Для моей проблемы можно было синхронизировать синхронизацию до уровня базы данных. – ben
вот что я сделал в то время: / – domoarrigato