WebHU - Programozási kérdések és válaszok

Régóta futó háttérfeladat egy Bottle alkalmazásban

Kerestem egy módot arra, hogy egy Python Bottle alkalmazásban folytonos háttérfeladatot futtassak, miközben egyidejűleg a Geventet használom a kérések kezelésére:

from gevent import monkey; monkey.patch_all()
from time import sleep
from bottle import route, run

# run_background_function()
# ^^^^ starts a single background task that runs every few seconds
# and continues for the life of the whole Bottle application.

@route('/simple-request')
def simple_request():
    # a simple function that returns a rendered page and
    # is capable of serving multiple requests
    return rendered_page()

run(host='0.0.0.0', port=8080, server='gevent')

Eddig sok stackoverflow szálat és 7 teljes oktatóanyagot elolvastam, köztük a Gevent, a threading, a celery, a rabbitmq, a redis, és fogalmam sincs, mit kellene használnom ennek a képességnek a eléréséhez. A Celery, a RabbitMQ és a Redis mind őrülten nehéznek és túlzásnak tűnik ennek az egyetlen háttérfeladatnak a futtatásához, ráadásul, ha lehetséges, inkább maradnék a Python szabványos könyvtárában.

Az oktatóanyagok, amelyeket eddig találtam, nagyon egyszerűnek indulnak, majd hirtelen bekerülnek a harmadik féltől származó könyvtárakba, socketekbe, speciális webes keretrendszerekbe stb. Nincs mód erre csak a Python szálfűző modulon?


  • a zeller, a rabbitmq és a redis nem őrülten nehéz. az Ön szükségleteinek részleteitől függően előfordulhat, hogy túlzásba esnek az Ön esetében. 05.10.2015
  • @scytale. Oké, talán nem őrülten nehéz, de miután kipróbáltunk számos oktatóanyagot és az ezekhez a csomagokhoz tartozó kezdő útmutatókat, észrevehető, hogy a legtöbb egy alapvető bevezetést igényel, a kelleténél sokkal összetettebb példakóddal. Egy példát, amely ezt nem teszi meg, és két bekezdésben világosan elmagyarázza a fogalmat (a sor/lista magyarázata), lásd itt: Multithreading/Queues 05.10.2015
  • az oktatóanyagok olyan programozóknak szólnak, akik ismerik az alapvető programozási fogalmakat - nem tudnak mindent elmagyarázni - csak többet kell olvasnia 05.10.2015
  • Az alapvető programozási fogalmakkal nincs bajom. Ezek a fogalmak valójában nem túl alapvetőek, és ha lennének, nem lenne annyi bejegyzés a SO-n, amelyek ugyanazokról a dolgokról kérdeznék, csak arról van szó, hogy a SO-val kapcsolatos legtöbb bejegyzés alkalmazásspecifikus, és sok felhasználó számára nehéz a fontos kódot kimásolni. használja egy másik esetben. Még néhány jól ismert tekintély is bevezeti a párhuzamos/párhuzamos feldolgozást, jelezve, hogy Pythonban ez nem egyszerű. 05.10.2015
  • Miért nem indítasz el egy python-szálat? 07.10.2015

Válaszok:


1

ezt megteheti a multiprocessing segítségével:

from multiprocessing import Queue, Process

def processor():
    setproctitle('%s - processor ' % (__file__,))

    while True:
        time.sleep(1)
        do_stuff()

my_processor = Process(target=processor)
05.10.2015
  • Mielőtt megpróbálnám integrálni ezt, feltételezem, hogy be tudom ragasztani a my_processor hívást a Bottle alkalmazáskódom tetejére, és ez nem akadályozza meg az alkalmazás többi részét a Gevent? 05.10.2015
  • igen, rendben kell lennie – nem fogod használni a geventet a my_processor-ben, igaz? 05.10.2015
  • és hozzá kell adnia néhány kódot, hogy megtisztítsa a dolgozót a fő hurokból 05.10.2015
  • A tisztítás nem jelent problémát, csak arra volt szükség, hogy megbizonyosodjak arról, hogy ezt az egyetlen folyamatot a háttérben futtathatom, köszönöm. 05.10.2015
  • Új anyagok

    A rádiógomb ellenőrzött eseményének használata a jQueryben
    Ebben a cikkben látni fogjuk, hogyan kell dolgozni a jquery választógombbal ellenőrzött eseményeivel. A választógombok HTML gombok, amelyek segítenek kiválasztani egyetlen értéket egy csoportból...

    Körkörös függőségek megoldása terraformban adatforrásokkal – lépésről lépésre
    Mi az a körkörös függőségek Dolgozzunk egy egyszerű eseten, amikor az SQS-sor és az S3-vödör közötti körkörös függőség problémája van egy egymástól függő címkeérték miatt. provider..

    Miért érdemes elkezdeni a kódolást 2023-ban?
    01100011 01101111 01100100 01100101 — beep boop beep boop Világunk folyamatosan fejlődik a technológia körül, és naponta fejlesztenek új technológiákat a valós problémák megoldására. Amint..

    🎙 Random Noise #2  – Örökbefogadás és hit
    az analitika íratlan világának gondozása Szeretné, hogy ezek a frissítések a postaládájába kerüljenek? Iratkozzon fel itt . "Ha önvezető autókat gyártanak, akkor mi miért ne..

    A legrosszabb politika és prediktív modellek májátültetésre jelöltek számára az Egyesült Államokban
    A máj (vagy óangolul lifer) az emberi test legnehezebb belső szervére utal, amely csendesen működik a nap 24 órájában. Mit csinál a máj? 500 feladatot hajt végre a szervezet egészségének..

    5 webhely, amely 2022-ben fejleszti front-end fejlesztői készségeit
    Frontendmentor.io A tényleges projektek létrehozásával a Frontendmentor.io segítséget nyújt a front-end kódolási képességeinek fejlesztésében. A kódolást azután kezdheti meg, hogy..

    Mikor kell használni a Type-t az interfészhez képest a TypeScriptben?
    A TypeScript a JavaScript gépelt szuperkészlete, amely statikus gépelést ad a nyelvhez. Ez megkönnyíti a robusztus és karbantartható kód írását azáltal, hogy a hibákat a fordítási időben..