How to implement a global class in django












0















I am currently working on a networked multiplayer game using django and django channels for websockets. I currently have my project set up where players send data to the server which then processes that data in a "GameManager" class that processes all game logic and interactions between all players. This works perfectly fine in my dev environment, but when I tried setting up my project for production, my global "GameManager" class does not seem to retain it's data across multiple requests. I'm guessing that since I'm using gunicorn in my production environment, my django project is running amongst multiple processes that each have their own instance of my classes.



My question is how can I implement some sort of global class in django to handle all the game logic that will be shared across all requests? I can't use sessions because I need this data to be shared by ALL connected clients, and I'm skeptical of using a solution such as redis because I would need to be reading/writing to it multiple times a second, so keeping it within python would help me keep things running smoothly. Any help would be greatly appreciated.










share|improve this question























  • Really redis is the solution here. It's easily able to deal with multiple reads/writes per second.

    – Daniel Roseman
    Nov 25 '18 at 22:42











  • @DanielRoseman Very well, do you know of any painless methods I could use to move my classes over to Redis, or am I looking at a full rewrite of my code base

    – Alex Broaddus
    Nov 26 '18 at 0:23
















0















I am currently working on a networked multiplayer game using django and django channels for websockets. I currently have my project set up where players send data to the server which then processes that data in a "GameManager" class that processes all game logic and interactions between all players. This works perfectly fine in my dev environment, but when I tried setting up my project for production, my global "GameManager" class does not seem to retain it's data across multiple requests. I'm guessing that since I'm using gunicorn in my production environment, my django project is running amongst multiple processes that each have their own instance of my classes.



My question is how can I implement some sort of global class in django to handle all the game logic that will be shared across all requests? I can't use sessions because I need this data to be shared by ALL connected clients, and I'm skeptical of using a solution such as redis because I would need to be reading/writing to it multiple times a second, so keeping it within python would help me keep things running smoothly. Any help would be greatly appreciated.










share|improve this question























  • Really redis is the solution here. It's easily able to deal with multiple reads/writes per second.

    – Daniel Roseman
    Nov 25 '18 at 22:42











  • @DanielRoseman Very well, do you know of any painless methods I could use to move my classes over to Redis, or am I looking at a full rewrite of my code base

    – Alex Broaddus
    Nov 26 '18 at 0:23














0












0








0








I am currently working on a networked multiplayer game using django and django channels for websockets. I currently have my project set up where players send data to the server which then processes that data in a "GameManager" class that processes all game logic and interactions between all players. This works perfectly fine in my dev environment, but when I tried setting up my project for production, my global "GameManager" class does not seem to retain it's data across multiple requests. I'm guessing that since I'm using gunicorn in my production environment, my django project is running amongst multiple processes that each have their own instance of my classes.



My question is how can I implement some sort of global class in django to handle all the game logic that will be shared across all requests? I can't use sessions because I need this data to be shared by ALL connected clients, and I'm skeptical of using a solution such as redis because I would need to be reading/writing to it multiple times a second, so keeping it within python would help me keep things running smoothly. Any help would be greatly appreciated.










share|improve this question














I am currently working on a networked multiplayer game using django and django channels for websockets. I currently have my project set up where players send data to the server which then processes that data in a "GameManager" class that processes all game logic and interactions between all players. This works perfectly fine in my dev environment, but when I tried setting up my project for production, my global "GameManager" class does not seem to retain it's data across multiple requests. I'm guessing that since I'm using gunicorn in my production environment, my django project is running amongst multiple processes that each have their own instance of my classes.



My question is how can I implement some sort of global class in django to handle all the game logic that will be shared across all requests? I can't use sessions because I need this data to be shared by ALL connected clients, and I'm skeptical of using a solution such as redis because I would need to be reading/writing to it multiple times a second, so keeping it within python would help me keep things running smoothly. Any help would be greatly appreciated.







python django django-channels






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 25 '18 at 22:12









Alex BroaddusAlex Broaddus

1




1













  • Really redis is the solution here. It's easily able to deal with multiple reads/writes per second.

    – Daniel Roseman
    Nov 25 '18 at 22:42











  • @DanielRoseman Very well, do you know of any painless methods I could use to move my classes over to Redis, or am I looking at a full rewrite of my code base

    – Alex Broaddus
    Nov 26 '18 at 0:23



















  • Really redis is the solution here. It's easily able to deal with multiple reads/writes per second.

    – Daniel Roseman
    Nov 25 '18 at 22:42











  • @DanielRoseman Very well, do you know of any painless methods I could use to move my classes over to Redis, or am I looking at a full rewrite of my code base

    – Alex Broaddus
    Nov 26 '18 at 0:23

















Really redis is the solution here. It's easily able to deal with multiple reads/writes per second.

– Daniel Roseman
Nov 25 '18 at 22:42





Really redis is the solution here. It's easily able to deal with multiple reads/writes per second.

– Daniel Roseman
Nov 25 '18 at 22:42













@DanielRoseman Very well, do you know of any painless methods I could use to move my classes over to Redis, or am I looking at a full rewrite of my code base

– Alex Broaddus
Nov 26 '18 at 0:23





@DanielRoseman Very well, do you know of any painless methods I could use to move my classes over to Redis, or am I looking at a full rewrite of my code base

– Alex Broaddus
Nov 26 '18 at 0:23












0






active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53472524%2fhow-to-implement-a-global-class-in-django%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes
















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53472524%2fhow-to-implement-a-global-class-in-django%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Costa Masnaga

Fotorealismo

Sidney Franklin