0

I have a get request for one of two objects inside a filterstore that looks like this:

req = yield depot.get(lambda req: req['id'] == 's38' or 's39')

I want to make this particular request a priority so that it queue jumps all other requests. Is this possible?

4

2 回答 2

1

是的,如果您创建类似于 PriorityQueue 的 FilterStore 子类,这是可能的。

于 2017-03-17T17:54:02.180 回答
0

这是一个对我有用的例子

import simpy
import bisect

class PriorityFilterStore(simpy.FilterStore):

    def _do_put(self, event):
        if len(self.items) < self._capacity:
            bisect.insort(self.items, event.item)
            event.succeed()

    def _do_get(self, event):
        for i in range(len(self.items)):
            item = self.items[i]
            if event.filter(item):
                del self.items[i]   
                event.succeed(item)
                break
        return True
于 2019-08-29T22:21:15.397 回答