質問

与えられたモジュールを実行する方法App Serverを実行しているのと同時に、必ずしもルーティングを使用しているとは同時に実行されます(デーモンサービス)。

例えば:

#some other route functions app.post(...)

#some other concurrent functions

def alarm():
    '''
    Run this service every X duration
    '''
    ALARM = 21 
    try:
        while 1:
            #checking time and doing something. Then finding INTERVAL
            gevent.sleep(INTERVAL)
    except KeyboardInterrupt,e:
        print 'exiting'
.

main

の後、このように上記のように使用する必要がありますか。
gevent.joinall(gevent.spawn(alarm))

app.run(....)
.

または

gevent.joinall((gevent.spawn(alarm),gevent.spawn(app.run)))
.

目標は、デーモンサービスのようなこれらのアラームを実行し、残りのサービスオペレーションが通常どおりに機能しながら、仕事やスヌーズを行います。 サーバーも同時に起動する必要があります。正しいトラックにない場合は訂正してください。

役に立ちましたか?

解決

Geventはそれ自身のWSGIサーバーを搭載しているので、app.runを使用する必要はありません。サーバーは次のとおりです。

はどちらも同じインタフェースを提供します。

あなたはあなたが欲しいものを達成するためにこれらを使うことができます:

import gevent
import gevent.monkey
gevent.monkey.patch_all()

import requests

from gevent.pywsgi import WSGIServer


# app = YourBottleApp

def alarm():
    '''
    Run this service every X duration
    '''
    ALARM = 21 
    while 1:
        #checking time and doing something. Then finding INTERVAL
        gevent.sleep(INTERVAL)


if __name__ == '__main__':
    http_server = WSGIServer(('', 8080), app)
    srv_greenlet = gevent.spawn(http_server.serve_forever)
    alarm_greenlet = gevent.spawn(alarm)

    try:
        gevent.joinall([srv_greenlet, alarm_greenlet])
    except KeyboardInterrupt:
        http_server.stop()
        print 'Quitting'
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top