コード例 #1
0
def test_job_queue_kill_with_error():
    def f():
        gevent.sleep(999)
    g = Greenlet(f)
    queue = lets.JobQueue()
    queue.put(g)
    queue.kill(ExpectedError)
    with pytest.raises(ExpectedError):
        g.get(block=False)
コード例 #2
0
def test_job_queue_exited():
    results = []
    def f(x, delay=0):
        gevent.sleep(delay)
        results.append(x)
        return x
    queue = lets.JobQueue()
    g1 = Greenlet(f, 1, 0.1)
    g2 = Greenlet(f, 2, 0.1)
    queue.put(g1)
    queue.put(g2)
    g1.join()
    queue.kill()
    queue.join()
    assert results == [1]
    assert g1.get() == 1
    assert isinstance(g2.get(), gevent.GreenletExit)
コード例 #3
0
ファイル: theme.py プロジェクト: sftech2013/msg
def make_preview(url_param, theme, width, height):
	# on devrait pouvoir builder l'url depuis la resource
	host = app.config['SERVER_CONFIG']['host']
	port = app.config['SERVER_CONFIG']['port']
	hostport = "%s:%s" % (host, port) if port else host
	url = "http://%s/live%s" % (hostport, url_param)
	# Marche dans le contexte de l'install de dev avec Grunt
	# local("grunt snap --url=%s --theme=%s --width=%s --height=%s" % (url, ident, width, height))
	# Là aussi on évite Grunt, on utilise PhantomJs en direct ...
	print url
	dest = os.path.join(theme.static_path, 'img', 'preview.png')
	script = "app/screenshot.js"
	if os.environ.get('HEROKU') and int(os.environ.get('HEROKU')) == 1:
		script = os.path.join('/app', script)

	# FIXME
	# Il y a toujours une erreur (non bloquante normalement) avec Phantom (pas systématique...)
	# quelque soit la méthode choisie, meme résultat : Error: read ECONNRESET
	# la connexion de PhantomJs pouvait poser pb mais normalement désactivée via test sur UA
	# exit 0, parceque sinon Phantom: returned non-zero exit status 8
	phantom_command = "phantomjs %s %s %s %s %s; exit 0;" % (script, url, dest, width, height)

	# test fabric
	# local("phantomjs %s %s %s %s %s" % (script, url, dest, width, height))

	# test subprocess
	# return_call = subprocess.call(phantom_command, shell=True)

	# test Gevent (tient la route avec Supervisor)
	# m = gevent.spawn(local, phantom_command)
	g = Greenlet(local, phantom_command)
	g.start()
	g.get(block=True)
	# g.join()

	return url
コード例 #4
0
 def _request_finished(self, g: Greenlet):
     """
     Ran as a callback when a request has finished. We will check the result object, and add it to the global
         counters.
     :param Greenlet g: The greenlet object of this reject.
     """
     result_object = g.get()  # type: TaskResult
     result = result_object.result
     if result == TaskState.FAILURE:
         self.failures += 1
         self._add_failure_reason(result_object.reason)
     else:
         self.passes += 1
     self.results_left += -1
     # Deal with response time metrics.
     this_response_time = result_object.response_time
     if this_response_time is not None:
         self.response_times.append(this_response_time)
         self.response_time_count += 1
         if this_response_time > self.max_response_time:
             self.max_response_time = this_response_time
         self.avg_response_time = \
             (self.avg_response_time * (self.response_time_count - 1) + this_response_time) / \
             self.response_time_count