On the last Friday of October in Minsk, Python Meetup was traditionally held, where three reports from experts from companies Viber, Melesta and Wargaming.net were read out while burgering. At this time, we went through the shortcomings of Python, figured out by example what problems you might encounter when porting to Python, and also looked at all the stages of developing Python servers for social games. All videos, as well as links to presentations can be found below.
Why should you increasingly think about the support of Python 3, and what problems you may encounter when porting. Consider the examples from Sentry how to add support for Python 3 using 2to3 , tox and six .
Important needs of a modern person are: communication with other people and games. At the junction of these two needs, various gaming applications appeared in social networks. Typically, such applications require a server side that can handle high loads. In this report, Alexey shares his experience in developing Python servers for social games, starting from the stage of developing a design document and ending with the release of the game into production and its further support.
The report reveals the weaknesses of Python, problems with GC, functional style, implementation of standard data structures and the CPython interpreter.
PS: November 29 there will be a regular meeting on the near-python themes. 4 reports will be read:
1.Introduction to GIL and the new GIL Andrei Nekhaychik gnomeby , Wargaming.net |COOO "Game Stream"
- Trends, differences from streams.
- How to use threads.
- Performance testing (and bummer).
- Introducing GIL, how it works.
- I / O exemption, 100 ticks.
- Why do I need GIL.
- Problems switching threads (slow capture).
- Problem 100 ticks.
- The problem of lack of priorities and their types.
- New GIL, 5 milliseconds, drop_request.
- When drop_request is not working.
- Competition CPU and I / O threads.
- How to combat GIL: theses on numpy, jython, multiprocessing.
2. Using gevent to emulate high load , Alexander Kolesen, SiliconMint
Mandatory action before the release of a more or less serious project - performance testing. On high-load projects, you need to know exactly what load they can withstand, and in advance. Therefore, we need a way to emulate high competitiveness, it is desirable that in theory it allows the channel to be fully loaded with traffic. In addition, it would be nice that it did not need to use several dozen servers. The report will tell you about the experience of using gevent for a similar task, which would allow you to manage with one t1.micro instance from which you are testing.
3. Asynchronous distributed task execution.Stdlib, Celery, RQ and own bikes. , Roman Imankulov, doist.io
When it is necessary to force a web application to do hard work without degrading the user experience, or if you need to quickly assemble a cluster on your knee, there is a need for distributed execution of command queues. The report will consider the options for organizing such queues with improvised means, it will be clarified why Celery is so good, if it has worthy alternatives, and how to write a working queue manager with thirty lines of code.
4. Optional typing in Python , Andrey Vlasov, JetBrains
With the advent of new libraries and dialects for typing Python revived
discussion of the need and ways to introduce optional types in Python. The report will cover the current state of this area, including JetBrains initiatives.
As always, on the mitap you will find an informal atmosphere, interesting questions on the topics of speakers and delicious burgers. All the details can be found on our FB page. Be everything, see you all!